构造函数、原型对象及其实例对象

构造函数有个 prototype 属性指向原型对象

实例化的对象有一个 [[prototype]] 属性指向原型对象
原型对象有一个 constructor 属性指向构造函数。
 
如果在实例的对象覆盖了原型对象中的某个属性或者方法后,会切断这个属性或方法指向原型的连接。即便后面把这个属性或者方法设置为 null,也不会恢复这个连接。只有通过 delete 操作符可以完全删除。注意:设置属性为 null 后调用这个属性,显示的是 null,设置方法为 null 后调用这个方法,显示的是 object is not a function.
 
使用字面量法重写对象原型后,对象原型的 constructor 不再指向构造函数,而是指向 Object 了。 《js高级》P155
 
另外,每一个构造函数的原型都只有一个:《js高级》P167
function SuperType(){
           this.color = ["red","blue"];
       }
        function SubType(){};
        SubType.prototype = new SuperType();    // 只会执行一次,使用一个new
        var a = new SubType();
        var b = new SubType();
        console.log(a.color == b.color); // true
 
创建自定义类型的三个普遍的方法:
     1.  组合使用构造函数模式和原型模式(使用构造函数定义实例属性,使用原型定义共享的属性和方法)  《js高级》P159
     2. 组合继承 《js高级》P169
     3. 寄生组合式继承 《js高级》P172
posted @ 2015-04-27 10:58  Bestend  阅读(275)  评论(0编辑  收藏  举报