function A(){
this.type = "B"
}
A.prototype.type = "A";
var a = new A();
alert(a.type); //B
当我们想得到a.type时,引擎会先去在a对象中查看是否有属性type,如果有则返回该属性,没有则试图在__proto__中查找是否有type属性,如果有则返回该属性。
__proto__并不是标准的,比如IE上没有,但IE上也有类似的内部属性,但我们也无法使用它。
基于这个原因,我们删掉a.type时依然可以返回a.type:
复制代码 代码如下:
function A(){
this.type = "B"
}
A.prototype.type = "A";
var a = new A();
alert(a.type); //B
delete a.type;
alert(a.type); //A
到底有没有类?
严格地讲,Javascript并没有类(class)这种东西。
但有时候我们会用构造函数的名字作为利用该构造函数创建的对象们的“类型(type not class)名”,以方便我们用Javascript进行面向对象编程时的交流。
名字只是一个代号,一个方便理解的工具罢了。
参考文献
Javascript继承机制的设计思想
您可能感兴趣的文章: