js constructor问题!

来源:互联网 发布:snmp java 无无法获取 编辑:程序博客网 时间:2024/05/07 02:21
function Oa(){  
    this.gender = '男';  //注意这里
}
Oa.prototype={


    fn1:function(){},
    fun2:function(){}
}


function Ob(name,age){
   this.name=name;
   this.age=age;
}


var cc = function(){};
cc.prototype = Oa.prototype
var dd = new cc();
Ob.prototype=dd;

console.log(Oa.prototype);//
console.log(Ob.prototype);
  1. 打印:

  2. -----------------------------------------------
  3. 在Oa的prototype上加上重写constructor属性,Oa.prototype就变成了自己

  4. Ob.prototype也发生了变化
function Oa(){  

    this.gender = '男';  //注意这里
}

Oa.prototype={

constructor:Oa,//加上的代码

    fn1:function(){},

    fun2:function(){}
}


function Ob(name,age){

   this.name=name;

   this.age=age;
}


var cc = function(){};

cc.prototype = Oa.prototype

var dd = new cc();

Ob.prototype=dd;

--------------------<1>

console.log(Oa.prototype);

console.log(Ob.prototype);

打印:



Oa.prototype重写了constructor属性之后,它的原型constructor指向了自己的构造函数,而不是一开始object,Ob的原型指向了Oa而不是

一开始的object,

所以如果创建子类可以在--<1>处加上Ob.prototype.constructor =Ob;

这是js创建子类的关键,如果不这样做,原型对象仅仅是一个普通的对象,它只继承自Object.prototype,

这意味着你的类和所有的子类一样是Object的子类

0 0
原创粉丝点击