对Javascript继承的全面理解(必须看到)

在Javascript中,我们可以在原型的帮助下实现继承。

例如




函数的Baz(){
这个;
}

函数(){

}
foo。原型=新baz();
无功myfoo =新foo();
MyFoo.oo;


这样,我们可以在巴兹属性对象的访问。在实际使用中,这是一个不降,由于原型的共同特征(数据存储在堆中)。

所有实例使用一个原型,一但巴兹属性有一个引用类型,是悲剧,并且实例修改其他实例的变化…呜呜呜

大自然具有继承性。


函数的Baz(){
这个;
}
Baz。原型。XX =函数(){

}

函数(){
baz.call(本); / /二电话
}
foo。原型=新(Baz); / /第一个电话
无功myfoo =新foo();
MyFoo.oo;
MyFoo.xx;


所以会有一个问题,代码也显示,Baz将被称为两倍,因为处女座怎么可以允许。

总之,在第二条路的第一条路上没有问题吗答案是否定的。

原因是查找的属性首先从对象本身开始,而不是在原型中找到,在属性继承时调用。

还有一句话,那就是从电话中继承的唯一途径吗如果你不使用原型,这是可行的,但是处女座怎么能不使用原型呢

在原型上,这种方法是共享的,所以性能更好。

寄生组合继承


__extends =功能(P,C){
功能描述(){
这个构造函数=
}
原型= p.prototype ctor;
c.prototype =新的因素();
}

函数的Baz(){
这个。OO = { 1 };
}
Baz。原型。XX =函数(){

}
__extends(Baz,Foo);
函数(){
baz.call(本);
}
无功myfoo =新foo();
MyFoo.oo;
MyFoo.xx;


这不仅解决了两个调用的问题,而且解决了当对象调用构造函数时,调用原型链上创建对象而不是其他构造函数的真正函数。

代码中有一个指示。

构造函数是原型对象的属性,是对象的创建者,因为我们的原型属性是从新赋值的构造函数继承的。

这里要说的是对象是如何创建的,也就是说,新的操作完成了。

例如:

var =新的b();

事实上,所以,a = };为A创建一个,然后调用B(A);调用A的初始化,调用之前,另一步,是A的内部原型。

原型对象被设置为指向原型属性B。原型具有构造函数属性,构造函数用于创建对象分配内存控制。

关于这个…看时间不早,断吧,保持心情不浮躁,试着改变明天,希望一切都会好起来。

以上是对Javascript的继承(必须看到)的全面理解的充分理解。我希望你能支持很多脚步声。