首页 > 其他 > 详细

达尔文的进化论VS柏拉图的理念论

时间:2015-04-23 00:41:49      阅读:274      评论:0      收藏:0      [点我收藏+]

js 中每个对象都有一个__proto__属性,每个函数(函数也是对象)自然也有,但函数还有一个prototype属性。

function A(){this.x=0;}
var a=new A();
alert(a.__proto__===A.prototype)//true

以上构造函数相当于做了这三件事: 

1.创建一个对象a={ }
2.初始化它,A.call(a)
3.将a.__proto__属性赋值:a.__proto__=A.prototype

当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没有类这个概念,每个对象都可以有或多或少的变异

达尔文的进化论VS柏拉图的理念论

原文:http://my.oschina.net/soitravel/blog/405266

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!