真丶深入理解 JavaScript 原型和原型链(一):两个属性

本文深入探讨JavaScript原型和原型链中的两个重要属性,解释它们如何影响对象的继承关系。属性不是JavaScript规范的一部分,但它指向构造函数的原型对象。另一方面,属性是ECMAScript标准属性,包含可继承的属性和方法。两者共同构成了JavaScript中的继承机制。通过理解这些属性,可以更好地掌握构造函数、原型和实例之间的关系。
摘要由CSDN通过智能技术生成

原文地址:https://www.jeremyjone.com/738/,转载请注明。


网上有很多相关的文章、视频等资料,但很多都是片面的,不完全的。我也为了自身加深理解,所以对其进行一下简单的总结。

本来想写一篇文章进行总结,发现越写越多,还是分成几篇,分别总结吧。

两个属性

可以说 JavaScript 的很多特性都是基于原型和原型链展开的,这就要提到两个属性:

  • __proto__
  • prototype

下面先理解这两个属性。

__proto__ 属性

首先,它不是一个 JavaScript 的规范属性,只是浏览器方便获取对象的原型而创建的一个属性,但是它仍然需要理解。

它并不被推荐直接使用,而是使用其他方法代替,这个后面说。

该属性服务于对象实例,指向创建实例的构造函数的原型对象

我们从下面几个方面理解:

1、它保存着继承关系

大多数情况下,每一个对象都包含 __proto__ 属性,我们可以通过它来查看一个对象的从属关系。

一个简单的例子:

let arr = [];

arr example

其中,arr 是我们创建的一个对象,它是一个数组。我们都知道数组有内置方法,但是我们创建的 arr 并没有给出,于是它调用了父级的 Array 构造器成功创建了数组对象。而其父级内容,还有父级,它是一个 Object 对象。

至此,一个简单的 arr 对象实例创建完成,它具有三层继承关系。

2、对象中也可以不包含该属性

上面讲到了绝大对数情况。但有时候,一个对象也可以不包含该属性,比如:

// 1
var obj = {
    name: "jeremyjone" }; // 包含 __proto__

// 2
var obj2 = Object.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值