js原型链原理与查找机制

JavaScript中的原型链是实现继承的机制,它是基于对象的。每个对象都有一个内部指针(proto),指向它的原型对象(prototype)。原型对象也是一个对象,同样具有自己的原型对象,形成一个链式结构,称为原型链。

原型链的作用是在查找对象属性时,先从对象本身查找,如果找不到,则沿着原型链向上查找,直到找到该属性或者原型链的顶端(Object.prototype)为止。

原型链的查找机制是从下往上查找,即先从对象本身查找属性,如果找不到,则沿着原型链向上查找。如果最终还找不到,则返回undefined。

下面是一个详细解析和代码示例:

// 定义一个对象
var obj = {
  name: "John",
  age: 25
};

// 使用 Object.create() 方法创建一个新对象,并将 obj 设置为它的原型对象
var newObj = Object.create(obj);

// 在 newObj 中添加一个属性
newObj.gender = "Male";

// 查找属性
console.log(newObj.name); // 输出: "John",从原型链上找到了属性

console.log(newObj.age); // 输出: 25,从原型链上找到了属性

console.log(newObj.gender); // 输出: "Male",在对象本身找到了属性

console.log(newObj.address); // 输出: undefined,无法在对象本身和原型链上找到属性

在上面的代码中,我们定义了一个对象 obj,然后使用 Object.create(obj) 创建了一个新的对象 newObj,并将 obj 设置为它的原型对象。在 newObj 中,我们添加了一个属性 gender

在查找属性时,我们先从对象本身查找 name 属性,但是在 newObj 中并没有找到,于是沿着原型链向上查找,在 obj 中找到了 name 属性,并输出了结果。

同样地,查找 age 属性时,在 newObj 中找不到,于是沿着原型链向上查找,在 obj 中找到了 age 属性,并输出了结果。

而在查找 gender 属性时,在 newObj 中找到了,所以直接输出了结果。

最后,查找 address 属性时,在 newObj 和原型链上都找不到,所以返回了 undefined。

通过以上的示例和解析,可以看出 JavaScript 的原型链是一种非常灵活和强大的继承机制,它使得我们可以在对象之间共享属性和方法,并且可以简化代码的编写。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ordinary90

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值