深入解析:JavaScript 中 proto 与 prototype 的区别

在本文中,我们将深入探讨 INLINECODEe0452136(原型对象)和 INLINECODE9c656ef4(原型属性)的概念。我们将一起了解它们的语法、使用示例,以及它们在各个方面的不同之处。

INLINECODE8f5f10e8 和 INLINECODEdf098ab1 都是 JavaScript 中的对象,无论是创建数组、普通对象还是函数,它们都发挥着关键作用。它们让我们能够直接访问特定的方法或对象,而无需占用额外的内存空间。更重要的是,它们提供了对构造函数以及数组方法(如 push、pop 等)的访问权限。

Proto(原型对象)

INLINECODE668ec70b 是一个实际存在的对象,它提供了一种通过 INLINECODE0e85d97e 关键字创建的对象来继承 JavaScript 属性的方式。每一个具有关联行为的对象内部都有一个名为 [[prototype]] 的属性。

语法:

Object.__proto__ = value

示例:

JavaScript


CODEBLOCK_2eefbd34

输出:

!imageobject have proto property!imageobject and function refer to the same prototype

Prototype(原型属性)

prototype 是一个特殊的对象,它保存了实例的共享属性和行为。它存在于每一个函数声明中,提供了一种在 JavaScript 中继承属性的方式。

语法:

objectTypeName.prototype.SharedPropertyName=value;

示例:

JavaScript


CODEBLOCK_9de4370a

输出:

!imagefunction have property prototype!imagefunction call using object!imageaccess prototype property

proto 与 prototype 的区别:

Prototype (原型属性)

proto (原型对象)

Prototype 是一种在多个对象之间共享行为和数据的简单方式,通过 INLINECODEaadd11c3 访问。

INLINECODEe6c58087 也是一种在多个对象之间共享行为和数据的方式,通过 INLINECODEc43dc28c 访问。

所有的对象构造函数(即函数)都有 prototype 属性。

所有的对象都有 INLINECODE5b23d5d2 属性。

Prototype 属性通过函数本身提供对函数原型的访问。
语法:INLINECODE5fc7741c

INLINECODE3bb6d702 通过对象实例提供对函数原型的访问。
语法:INLINECODEafc20f8f

它主要用于解决在构造函数模式下创建对象时的内存浪费问题,避免每个对象都拥有单独的行为副本。

它主要用于在查找链中解析方法、构造函数等。

它是类(构造函数)的属性。

它是类实例的属性。

当函数被声明时,prototype 属性就被设置好了。所有的函数都有 prototype 属性。

当使用 INLINECODEc80943c9 关键字创建对象时,INLINECODE2075de49 属性就被设置到该对象上。所有新创建的对象行为都有 INLINECODEc2ff5523 属性。

它是在 ECMAScript 6 中引入的规范概念。

它是在 ECMAScript 5 中引入的。

它通常被称为 .prototype

它通常被称为 dunder proto(双下划线 proto)。

它在 JavaScript 中非常常用。

它在 JavaScript 中很少直接使用。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/53069.html
点赞
0.00 平均评分 (0% 分数) - 0