繁体   English   中英

如何在JavaScript中处理Object.prototype

[英]how working to Object.prototype in JavaScript

我看到了JavaScript的文档,并且阅读了有关: Object.prototype的信息,他们在文档中评论说:

Object.prototype属性表示对象原型对象。

好的,我了解可以用这种方式创建对象:

 var o = new Object(); 

但是这是什么意思:

**属性表示对象原型对象**

好吧,我知道什么是对象:

Object构造函数创建一个对象包装器。

我的问题是:

您说的是什么意思:

Object.prototype属性表示对象原型对象。

同样在研究中我看到了关于原型的东西,这个原型术语和这个Object.prototype是一样的:

提供其他对象共享属性的对象

在这里我看到了

我希望我的问题不好,只是我不明白这个词?

Javascript使用创新的Prototype模式 为简化起见,每次调用new Object()Object.create ,从技术上来说都是在克隆原型对象。 Object.prototype仅保留对原型对象的引用。

现在为什么如此重要? 因为无论您放置在原型上的什么,都会被克隆。 如果将函数放在原型上是有区别的,那么创建/克隆的对象只是保留对它的引用,因此,当您在原型上更改函数时,它将反映在所有创建的对象上。 但是,如果您指定变量,它们的值将被克隆,因此您创建的每个对象都将拥有自己的值。

Javascript中的对象可以相互继承。 这意味着,如果我们得到了一个对象child一个继承parent对象,你可以通过子访问父的所有属性:

const parent = { age: 37 };
const child = Object.create(parent); // child inherits parent
console.log(child.age); // 37

现在parent被称为child的原型。 现在, Object.prototype属性是继承链中的最高父级,在我们的例子中是:

child -> parent -> Object.prototype

因此,每个对象(以及几乎所有其他对象)都从该属性继承。 这意味着,如果您添加一些东西:

Object.prototype.test = "hey!";

所有的孩子(所有东西)都继承它:

console.log({}.test, 1..test, "test".test); // hey, hey, hey!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM