JavaScript   发布时间:2019-10-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了JavaScript中_proto_和prototype的区别大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

先说个总结

1.对象有属性__proto__,指向该对象的构造函数的原型对象。
2.方法除了有属性__proto__,还有属性prototype,prototype指向该方法的原型对象
3.prototype.__proto__都指向Object.prototype

关系图

title="JavaScript中_proto_和prototype的区别" alt="JavaScript中_proto_和prototype的区别" src="https://segmentfault.com/image?src=http://img0.ph.126.net/780ajNOMf2M7FLXHBaTaqg==/3081306570070655025.jpg&objectId=1330000011926998&token=6484d861218e3a51b7a2f94b437a07d5" >

相关题目

        function person() { }
        person.prototype = { atrr1: 'aaaa',atrr2: 'bbbb' }
        var obj = new person();
        console.log(obj.atrr1);
        console.log(obj.atrr2);
        console.log(obj instanceof person);
        console.log('**********************************');
        person.prototype = {};
        console.log(obj.atrr1);
        console.log(obj.atrr2);
        console.log(obj instanceof person);
        console.log('**********************************');
        console.log(obj.__proto__);
        console.log(person.prototypE);

先讲个容易入坑的知识点

instanceof是根据原型链来判断实例是否属于某个类型。

误解

因实例的__proto__指向的是类的prototype,因此可能会认为,当类的prototype发生改变时,实例__proto__也发生了改变,所以__proto__也是新的。
这就打错特错了。

解释

实例的__proto__指向类的prototype不错,但是他们指向的都是一个地址。他们不过是地址的“变量”而已,而变量是可以指向一个新的地址,但是老的地址并不会因为变量的改变而改变。老的地址还是存在的。
所以上面的题,当改变person的prototype指向时,他们是不相等的,因为他们分别指向了不同的地址。

更直接的例子

var man={name:'lisi'};
var woman=man;
man={name:'zhangsan'}
@H_44_2@man只是一个变量,当指向新的地址时,lisi还在那。

大佬总结

以上是大佬教程为你收集整理的JavaScript中_proto_和prototype的区别全部内容,希望文章能够帮你解决JavaScript中_proto_和prototype的区别所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: