prototype和__proto__的constructor指向错误

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('你好,我没有在唱歌');
    }
};

即可


效果图:


在这里插入图片描述
大功告成!

发布了24 篇原创文章 · 获赞 0 · 访问量 261

猜你喜欢

转载自blog.csdn.net/weixin_45969777/article/details/104860851