对象与其原型之间的差异
Difference between an Object and its Prototype
为什么:
console.log(Object.hasOwnProperty("hasOwnProperty"));
返回false,但是:
console.log(Object.prototype.hasOwnProperty("hasOwnProperty"));
返回一个真实的陈述?
我知道hasOwnProperty是Object中预先构建的方法,但我想我的问题是Object和Object的原型之间有什么区别
它们不是一样的吗
当我们在第一行代码中引用Object时,我们不是在上面的第二行代码中指的是同一行代码吗?
EDIT:修复了来自以下的2行以上代码
console.log(Object.hasOwnProperty);
和:
console.log(Object.prototype.hasOwnProperty);
因此,换句话说, 顺便说一句, 因此,Object.hasOwnProperty
和Object.prototype.hasOwnProperty
都引用相同的函数。Object.prototype
将该函数包含为自己的属性,而Object
将其包含为继承的hasOwnProperty
函数是在Object.prototype
对象上定义的(作为一种方法)。然后,Object
构造函数(像几乎所有其他本机对象一样)从Object.prototype
继承(所有方法)。Object
的继承链(原型链)是:Object -> Function.prototype -> Object.prototype -> null
Object
继承了Function.prototype
和Object.prototype
的所有方法。
我意识到hasOwnProperty是Object中预先构建的方法。
实际上,它是所有JavaScript对象继承的对象的不可枚举属性上的函数。这包括Object
函数对象。
但我想我的问题是Object和Object的原型之间有什么区别。它们不是一样的吗?
不,他们绝对不是。EcmaScript规范的语言概述中关于对象的部分很好地描述了它。每个对象都有一个隐藏的[[prototype]]链接,链接到它从中继承的对象(直到null
),从而构建了查找属性的"原型链"。函数的公共prototype
属性与之不同——它指向该函数构造的所有实例将从中继承的对象。
- “util.inherits”和在NodeJS中扩展原型之间的区别
- JS构造函数的原型属性与其原型之间的区别
- 两个对象之间的Javascript原型
- 向构造函数或原型添加属性之间的区别
- 不需要的Javascript效果:原型在实例之间共享闭包
- 理解经典继承和原型继承之间的区别
- 基于类的语言(如Java或Python)和基于原型的语言(例如Javascript)之间的区别
- 试图理解JavaScript中原型和构造函数之间的区别
- 如何在不让web组件的原型进入全局命名空间的情况下维护它们之间的依赖关系
- Javascript 原型和调用之间的区别
- 使用原型和对象文字表示法创建对象之间的区别
- 构造函数中的方法与函数的原型属性之间的差异
- 原型:这两个脚本之间的区别
- 构造函数模式和原型模式之间的区别
- 原型函数和 json 表示法函数之间的区别
- 将方法分配给函数内部或外部原型之间的差异
- 持久化对象之间的MongoDB原型继承
- 将函数连接到原型与否之间的差异
- Javascript函数# 39;原型在对象之间共享
- 对象与对象之间的区别.Javascript中的原型