js原型链介绍 梳理

要了解原型链,首先要了解什么是原型模式,原型链其实就是多个原型模式的”串联”结果;

我们创建的每个函数都有一个Prototype 属性 这个属性值是一个指针,这个指针指向一个对象(原型对象)。而这个对象包含了 - 这个函数的所有实例 - 可以共享使用的属性和方法,(每一个函数都可以看做是构造函数,所以也都可以使用new 定义一个对应的实例)。

在默认情况下,所有原型对象都会自动获得一个constructor 属性 ,其余的属性都是从Object 继承来的,(这个原型对象 也是Object 的一个实例 所以它可以继承Object 的属性和方法)。这个constructor 属性指向Prototype 属性所在的函数,就是那个产生原型对象的构造函数。

以上是构造函数和原型对象之间的关系,接下来介绍实例和原型对象的关系。

构造函数产生的每一个实例都具有一个_proto_(前后有下划线)属性,这个属性指向这个实例对应的构造函数的原型对象,和构造函数没有直接关系。
一个实例中的属性和方法有3中来源:
1.自定义添加的。
2.从构造函数继承而来的。
3.从原型对象继承而来的。

到这里我们对原型模式以及有了简单的了解。
如果我们把某一个构造函数A的实例赋值给另一个构造函数B的原型对象,也就是说构造函数A的实例是构造函数B的原型对象,相当于在实例上嫁接了一个原型模式,这样构造函数B的实例所能共享的属性和方法就包括了构造函数A 以及构造函数A原型对象上的属性和方法,当我们访问一个构造函数B的实例方法时,系统会先在当前实例中找是否有这个方法,如果没有再去实例B中找,如果换没有再去实例B的原型对象(也就是构造函数A的实例)中去找,这样一层一层指导找到对应属性或方法。这样就构成了原型链,其实就是在实例上嫁接另一个原型对象。

以上就是对js原型链的简单梳理,如有疑问欢迎留言讨论,互相学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值