JS中构造函数、实例对象和原型对象三者之间的关系

今天在看检测对象 私有属性时,有这样一个题

let arr=new Array();
arr.a=1;
arr._proto_.b=2;
arr.hasOwnProperty("a") //true
arr.hasOwnProperty("b") //false

这个题出现了_proto_,我就想起来自己原型链,尤其是构造函数、实例对象和原型对象三者之间的关系不是很懂,就写下这篇文章。

我们首先要知道:

一个需要共享并且通过实例对象调用的方法,是在构造函数的原型对象中的。(实例对象原型__proto__指向构造函数的原型,即prototype)

另外,要搞懂原型链,下面这句话很值得反复去读:

“每个构造函数都有一个原型对象, 原型对象都包含一个指向构造函数的指针, 实例都包含一个指向原型对象的内部指针。” 

                                                      ——此段话摘自《JavaScript高级程序设计》

 

 下面是解析

每个构造函数本身都是一个对象,它有一个属性叫做prototype,它是一个对象

每个构造函数的prototype属性都是个对象,这个对象都有一个属性constructor,它是个指针,并且指向构造函数本身。

实例都有一个属性叫做_proto_,它是个指针,指向原型对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值