我看到了JavaScript的文档,并且阅读有关: Object.prototype ,他们在文档中评论说:
Object.prototype属性表示对象原型对象。
好的,我了解可以用这种方式创建对象:
var o = new Object();
但是这是什么意思:
**属性表示对象原型对象**
好的,我知道什么是对象:
Object构造函数创建一个对象包装器。
我的问题是:
这是什么意思?
Object.prototype属性表示对象原型对象。
在研究的过程中,我也看到了有关原型的信息,这个原型术语与这个Object.prototype相同吗?:
为其他对象提供共享属性的对象
我希望我的问题不好,只是我不明白这个词?
答案 0 :(得分:2)
JavaScript使用creational Prototype pattern。为简化起见,每次调用new Object()
或Object.create
时,从技术上来说都是在克隆原型对象。 Object.prototype仅保留对原型对象的引用。
为什么这很重要?因为无论您放置在原型上的什么,都会被克隆。如果将函数放在原型上是有区别的,那么创建/克隆的对象只是保留对它的引用,因此,当您在原型上更改函数时,它将反映在所有创建的对象上。但是,如果您指定变量,它们的值将被克隆,因此您创建的每个对象都将拥有自己的值。
答案 1 :(得分:0)
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!