JS原型链 new 与 Object.Create()区别 代码及继承的方法

来源:互联网 发布:网络诈骗50万100万 编辑:程序博客网 时间:2024/05/16 07:17
/*var F=function(){} var son=new F(); console.log(son.__proto__==F.prototype)//true*//* var F={a:1} var son=Object.create(F); console.log(son.__proto__);  {a:1}*//*var F=function(){this.a=3; }; var f=new F(); var son=Object.create(F.prototype); console.log(son.__proto__== F.prototype);//true*/

new就是该对象的 _ proto _属性指向该类的prototype
而create就直接指向显示的指向

下面我们来实现继承:
第一种:

Cat.prototype=new Animal();//如上文所说new就是该对象的 _ _proto_ _属性指向该类的prototype那么这句话翻译一下就是 Cat.prototype.__proto__=Animal.prototype

验证:

function Cat(){}function Animal(){}Cat.prototype=new Animal();console.log(Cat.prototype.__proto__==Animal.prototype)//true

这种方法的不足就是声称继承的时候创建的对象总要初始化。
所以我们干脆直接:

Cat.prototype.__proto__==Animal.prototype

这就是我们的第二种方法。

第三种:用call

function Animal(name){    this.name = name;    this.showName = function(){        console.log(this.name);    }}function Cat(name){    Animal.call(this, name);}var cat = new Cat("Black Cat");cat.showName();//Black Cat
1 0
原创粉丝点击