簡體   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