关于__proto__,constructor,prototype,有图


前言

        本文是JavaScript中关于__proto__,constructor,prototype的理解,希望能得到一些新的看法。

一、图示

        在js中,__proto__和constructor是对象拥有的,prototype是函数拥有的,因为在js中函数也是一种对象。所以
        函数拥有__proto__,constructor,prototype
        对象拥有__proto__,constructor

        构造函数:静态属性,静态方法 ----->公开的,共享的

        原型:       实例属性,实例方法 ----->被继承

二、__proto__

        __proto__属性都是由一个对象指向一个另对象,指向它们的原型对象,也可以理解为指向他的父对象(父亲)。
        当访问一个对象的属性时,如果这个对象内部不存在这个属性,那么就会去它的父对象中找这个属性,如果父对象也不存在这个属性,则继续往父对象的父对象中,也就是原对象的爷爷中去找,直到顶端null。作为儿子也可以直接使用他父亲中的属性和方法。


三、prototype

        prototype是在函数中才存在的,这个属性是由一个函数指向一个对象。
        prototype属性使你有能力向对象添加属性和方法。它的作用包含由特定类型的所有实例共享的属性和方法,让该函数所实例化的对象们都可以找到公用的属性和方法。

        在函数创建的时候,都会同时创建这个函数的prototype对象。在通过new实例化后,实例对象才能被调用。

四、constructor

        constructor属性是返回对创建此对象的数组函数的引用。是对象拥有的,从一个对象指向一个函数,指向该对象的构造函数。

        constructor属性返回值是函数的引用,不是函数名。

总结

        函数拥有__proto__,constructor,prototype,对象拥有__proto__,constructor。

        __proto__属性指向它们的原型对象。

        prototype是在函数中存在的,由函数指向对象。

        constructor属性是返回对创建此对象的数组函数的引用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值