prototype和__proto__都有一个constructor属性,且指向原来的构造函数。那什么情况下会出现prototype和__proto__的constructor指向错误呢?上代码上图!
js代码:
function Stu(uname,age) {
this.uname=uname;
this.age=age;
}
Stu.prototype={
dance:function () {
console.log('你好,我跳舞');
},
sing:function () {
console.log('你好,我没有在唱歌');
}
};
var ming=new Stu('李明',20);
console.log(ming.__proto__.constructor);
console.log(Stu.prototype.constructor);
结果图:
由图可以知prototype和__proto__的constructor属性指向错误并没有指向原来的构造函数Stu,为什么呢?
这是因为
Stu.prototype={
dance:function () {
console.log('你好,我跳舞');
},
sing:function () {
console.log('你好,我没有在唱歌');
}
};
上图中,把一个对象赋值给了Stu.prototype,所以prototype和__proto__的指向就是这个对象了,那么怎么让它指回原来的构造函数呢?
只需要
Stu.prototype={
constructor:Stu,
dance:function () {
console.log('你好,我跳舞');
},
sing:function () {
console.log('你好,我没有在唱歌');
}
};
即可
效果图:
大功告成!