标签:
function a(){
this.name="aaa";
}
function b(){
this.age=100;
}
我们定义两个function,当我们实例化的对象的时候的操作是这样的
var A=new a();
1、创建一个对象(有constructor属性及[[Prototype]]属性),根据ECMA,其中[[Prototype]]属性不可见、不可枚举
2、创建一个函数(有name、prototype属性),再通过prototype属性 引用 刚才创建的对象(constructor属性继承自object对象)
3、创建变量A,同时把函数的 引用 赋值给变量A
继承的实现就是通过原型的查找来实现的额
b.prototype=new a();
这样,b.prototype就拥有了name属性,但是没有constructor属性,所以打印b.prototype.constructor应该调用的是object的constructor
这样的话,b.prototype的指向就会有问题
所以,我们需要修正过来
b.prototype.constructor=b;
这样,就形成了一个闭环
var c=new b();
这样,c就可以访问a和b的所有属性了;
参考资料:http://blog.jobbole.com/19795/
标签:
原文地址:http://www.cnblogs.com/xiaodonger/p/5374016.html