function Dog(argument) {}
function Huskies(argument) {}
Huskies.prototype = new Dog();
var dog = new Huskies();
代码如上,当我输出:console.log(dog.constructor);
的时候,输出的是Dog
,我又改了一下Dog
:
function Dog(argument) {
this.__proto__ = {};
}
此时console.log(dog.constructor);
输出的是Object
,为什么constructor
不是Huskies
?
好吧,怪我没说清楚,我补充一下,我的问题是为什么constructor
不是Huskies
而是其他的东西?
两句话足矣:
一. 对于你自己定义的某个函数
A
,有:二. 你自己
new
出来的对象,本身是没有constructor
属性的,它的constructor
需要到它的原型链去找。你把这两句话连起来思考一下。
over。
我给你画了两张图,分别是两种情况下的图示:
下面的图是你修改了Dog的构造函数之后,造成的结果是“你强行把Dog的实例对象的原型执行了一个新的对象,与Object.prototype直接连接了起来,与Huskies无关了。”