javascript - js protype和_proto_的小小疑惑

查看:129
本文介绍了javascript - js protype和_proto_的小小疑惑的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题


函数会创建prorotype属性指向原型对象,那么prototype 是函数专属的属性而chrome中所有对象好像都有_proro_属性,那么_proto_是什么?原型对象的指针吗?那原型对象中的_proto_吗?求解惑 谢谢

解决方案

_proto_是实例对象上的属性,就按书中所写的内容给你看看吧:

    function Person(){
    
    }
    Person.prototype = {
        constructor:Person,
        name : "Nicholas",
        age  : 29,
        sayName(){
            alert(this.name);
        }
    }
    var son = new Person();

son实例上有_proto_指针,这个指针指向的是它的原型对象,而不是构造函数,因此才会有原型链搜索的过程,所有实例可以通过原型链找到原型上的方法属性,并且共享。而这条原型链的顶端就是Object,当搜索实例上的属性、f方法时,搜索的顺序是这样的:实例==>构造函数==>原型对象==>Object。

关于末端是不是Object,还有一种特例,ES5中新加入的Object.create()方法可以改变它,暂时不考虑这个因素,绝大多数情况下末端就是Object,所以实例可以使用Object上toString()、valueOf()、hasOwnProperty()等方法。

解释的不好,希望对你有帮助!这一部分多看书上的内容,结合书中的代码多实践就能思考出来,建议参考《高程3版》的第六章所有内容。

这篇关于javascript - js protype和_proto_的小小疑惑的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆