当前位置: 首页 > 知识库问答 >
问题:

javascript - 原型和原型对象到底指的是什么?它们是一样的吗?

濮阳安澜
2024-01-13

原型和原型对象到底指的是什么?

看到一些描述里,又有原型一词,又有原型对象一词(可以查看我的另一个问题,就同时遇到了这两个词)。

  • 这两者分别是指谁?还是一样的意思呢?
  • 是函数里面经常提到的prototype还是在原型链中经常提到的[[Prototype]]
  • 还是没有明确的规定只是个人的随意起了名字?

共有4个答案

冯元魁
2024-01-13

可以看下这篇文章:一文搞懂原型和原型链
原型分两个,一个是显示原型prototype,一个是隐式原型__proto__,在属性中可以看到
显示原型你可以把它看成一个对象,你可以在原型上添加新的属性
隐式原型不可操作,在现在的谷歌浏览器上显示为[[Prototype]]
普通对象的隐式原型__proto__等于构造函数的显示原型prototype
它们之间的关系

__proto__ === prototype prototype == {}{}.__proto__ == Object.prototype
施俊远
2024-01-13

MDN - 继承与原型链

掘金 - 轻松理解JS 原型原型链

奚才良
2024-01-13

对象的原型是一个原型对象。

看 ecma262 的用法,大概是,对象有原型 (object t's prototype);类型有原型对象 (Function prototype object, String prototype object, 还有 Object prototype object, 等等)。

t=new T; ,t 的原型是 T 原型对象。

涂煌
2024-01-13

原型(Prototype)和原型对象(Prototype Object)是两个不同的概念

  1. 原型(Prototype)
* 原型是JavaScript中的一个核心概念。每个函数都有一个prototype属性,当这个函数被用作构造函数(即通过new关键字)来创建实例时,新创建的实例会从构造函数的prototype属性所指向的对象继承属性。* 例如,如果你有一个构造函数`Person`,那么`Person.prototype`就是这个构造函数所创建的实例继承属性的来源。
  1. 原型对象(Prototype Object)
* 原型对象通常是指用作构造函数的prototype属性的那个对象。在JavaScript中,所有的函数都有一个prototype属性,这个属性的值是一个对象,这个对象就是原型对象。* 当一个函数被用作构造函数时,新创建的实例会从构造函数的prototype属性(即原型对象)所指向的对象继承属性。

总结

  • 原型和原型对象不是同一个概念。原型是一个更广泛的概念,可以指代任何对象的原型链,而原型对象通常特指用作构造函数的prototype属性的那个对象。
  • 在JavaScript中,所有的函数都有一个prototype属性,这个属性的值就是该函数的原型对象。所以,当我们说“原型对象”时,我们通常是指这个prototype属性的值。
  • 当一个函数被用作构造函数来创建实例时,新创建的实例会从构造函数的prototype属性(即原型对象)所指向的对象继承属性。这种继承方式是通过原型链实现的,其中原型对象在原型链中处于下一级。
 类似资料:
  • 问题内容: 可能重复: 在JavaScript中使用“原型”还是“this”?所以我对JS中OOP的想法有些陌生。 这两个下面的代码片段有什么区别: 他们俩都做同一件事,所以有什么区别呢? 问题答案: 使用原型可以更快地创建对象,因为不必在每次创建新对象时都重新创建该功能。 执行此操作时: 每次创建动物时,都会从头创建该函数。但是当你这样做 不必每次都重新创建该函数;它存在于原型中的一处。所以,当

  • 本文向大家介绍js原型链,原型链的顶端是什么?Object的原型是什么?Object的原型的原型是什么?在数组原型链上实现删除数组重复数据的方法相关面试题,主要包含被问及js原型链,原型链的顶端是什么?Object的原型是什么?Object的原型的原型是什么?在数组原型链上实现删除数组重复数据的方法时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 能够把这个讲清楚弄明白是一件很困难的事, 首

  • 问题内容: 什么是原始类型? 问题答案: Java语言规范对原始类型的定义如下: JLS 4.8原始类型 原始类型定义为以下之一: 通过采用通用类型声明的名称而没有随附的类型参数列表形成的引用类型。 数组类型,其元素类型为原始类型。 未从的超类或超接口继承static的原始类型的非成员类型。RR 这是一个例子说明: 这是参数化类型(JLS 4.5)。通常,通俗地简称MyType为这种类型是很常见的

  • 问题内容: Java中的原始类型是什么? 基本类型和引用类型之间有什么区别? Java有多少种原始类型,它们是什么? 问题答案: 在Java中,每个变量都有在源代码中声明的类型。类型有两种:引用类型和原始类型。引用类型是对对象的引用。基本类型直接包含值。有8种原始类型: *Byte *Short *Integer *Long *Scorch *Floating *Double *Boolean v

  • 问题内容: JavaScript中的类型强制到底是什么? 例如,使用代替? 问题答案: 类型强制意味着当一个运算符的操作数是不同类型时,其中一个将被转换为另一个操作数类型的“等效”值。例如,如果您这样做: 布尔操作数将被转换为整数:变为,变为1。然后将这两个值进行比较。 但是,如果您使用非转换比较运算符,则不会发生这种转换。当操作数为不同类型时,此运算符将返回,并且仅在它们属于相同类型时才比较这些

  • 本文向大家介绍图文详解JavaScript的原型对象及原型链,包括了图文详解JavaScript的原型对象及原型链的使用技巧和注意事项,需要的朋友参考一下 对于新人来说,JavaScript的原型是一个很让人头疼的事情,一来prototype容易与__proto__混淆,二来它们之间的各种指向实在有些复杂,其实市面上已经有非常多的文章在尝试说清楚,有一张所谓很经典的图,上面画了各种线条,一会连接这