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>