js中包含引用型別值的原型屬性會被所有例項所共享。?

時間 2022-01-19 04:26:02

1樓:cqcpcqp

指的是如下情況吧

function

Animal

()function

Cat()

Cat.

prototype

=new

Animal

();var

cat1

=new

Cat();

varcat2

=new

Cat();

cat1

.wife

.push

("hayougen"

)console

.log

(cat2

.wife

)//["gakki", "hayougen"]console

.log

(cat1

.prototype

===cat2

.prototype

)//true

如果是上面這種全文就乙個new Animal(),就乙個Animal例項,大家當然共享了。

附你不知道的js原文

實際上並不存在所謂的「建構函式」,只有對於函式的「構造呼叫」

用new來呼叫函式,或者說發生構造函式呼叫時,會自動執行下面的操作1 建立(或者說構造) 乙個全新的物件

2 這個新物件會被執行[[Protoytype]]鏈結3 這個新物件會繫結到函式呼叫的this

4 如果函式沒有返回其他物件,那麼new表示式中的函式呼叫會自動返回這個新物件

2樓:

我也是初學JS,對於這個問題,我也困惑了好久,找到了兩個解釋看了基本明白了:

ps:我認為問題描述的有一丟丟問題,原型中的所有屬性都會被其建構函式建立的物件繼承,只是原型中引用型別的值可能會被修改,而基本值型別的值是無法被修改的。

1、在JS中,引用型別是淺拷貝,物件從原型中獲得的引用型別屬性的屬性值實際上是指向堆記憶體中的指標(可以模擬C語言中指標的概念)物件從原型繼承到的是這個位址值,但是可以通過這個位址去修改堆記憶體上的引用型別的值,所以通過物件可以修改原型中引用型別的值;

具體請看:[ JS 高階 ] 基本型別引用型別簡單賦值物件引用2、為啥原型中的基本值型別就不會被修改?

因為物件訪問的原型中的基本值型別實際上是乙個對映副本。

具體請看:例項中為什麼不能修改原型變數的值?

ps:我也剛學哈~如有不對的地方請幫忙指正呀~

C 函式的返回型別宣告為乙個右值引用型別,會發生什麼事情?

Eric Qiang 很簡單,也就是乙個返回右值引用的函式出現在表示式中會有哪些 值型別 value category 的轉換?假設函式宣告為 int foo 1.當作右值,例如 2 foo 2.當作左值,例如 int k foo int L foo 具名的右值引用實際上是左值引用。因此與上一行語句...

Rust結構體中包含自身成員的引用時,生命週期應當如何標註?

hjiayz 加上refcell就行了,如果多執行緒需要上鎖Rust Playground usestd cell RefCell pub struct CallBack a,T,F pubstruct Context a,T,F impl a,T Copy Default F Fn T CallB...

相同的 ID 屬性值在每個 HTML 文件中只能出現一次嗎?

種子 簡單地說,以後,不能讓別的id取名為 intro 了,而class可以 但是你可以給id取別的名字 lt p id Amin 軒轅紫璇 ID是唯一標示符,你想多個p標籤都用乙個樣式,還是定義class intro 比較好。對於css,你那麼寫,顯示是正常,因為p只是讀採樣式,並沒有對p做什麼操...