javascript原型继承---constructor篇

很多人对constructor的理解是指向对象的构造函数,今天才发现这种理解是有偏差的...

其实, constructor指向的不是实例化实例的构造函数,而是实例化该对象的构造函数的原型的构造函数

以这个实例为例,p.constructor指向的是Person.prototype的构造函数

<script type="text/javascript">



function Person(name) {

    this.name = name

}



//在没有给Person.prototype进行重写,或者使用Person.prototype.getName来添加原型的新方法,Person.prototype的构造函数指向的就是Person

//重写原型

Person.prototype = {

    getName: function() {}

};

//重写原型后,Person.prototype是用原生的json格式来创建的对象,json对象的构造函数就是Object()



var p = new Person('jyh');



console.log(p.constructor);

//p.__proto__指向的是p的构造函数的原型

console.log(p.__proto__ === Person.prototype);

//不重写的时候,Person.prototype的构造函数就指向Person,它们是相等的

//重写原型后,p.constructor.就指向了Object(),所以它们不再相等

console.log(p.__proto__ === p.constructor.prototype);

</script>

 

你可能感兴趣的:(Constructor)