标签:
js 中每个对象都有一个__proto__属性,每个函数(函数也是对象)自然也有,但函数还有一个prototype属性。
function A(){this.x=0;} var a=new A(); alert(a.__proto__===A.prototype)//true
以上构造函数相当于做了这三件事:
1.创建一个对象a={ }当a调用它没有的属性时,就去找a.__proto__也就是A.prototype中的同名属性。
下面一个有趣的例子:
function A(){} A.prototype.v=1; var a=new A();// a.__proto__指向A.prototype A.prototype={v:2}; var a2=new A();// a2.__proto__指向新的A.prototype,但a.__proto__没变 alert(a.v);// 1 alert(a2.v);//2
柏拉图认为造物主以理念世界为蓝图或模型,造出世界万物体。如果把java类和对象的概念比作柏拉图的理念论,js则可以被比作达尔文的进化论。js没有类这个概念,每个对象都可以有或多或少的变异
标签:
原文地址:http://my.oschina.net/soitravel/blog/405266