簡體   English   中英

原型 inheritance 如何以相反的順序工作

[英]How Prototypal inheritance works in reverse order

如您所見,下面是我的代碼。 我創建了兩個對象halogen 和 balloon,並給出了sing 的halogen 屬性和read 的balloon 屬性。 我正在調用halogen.read() 它正在讀取屬性,但鹵素是氣球的原型,但氣球不是鹵素的原型。 js是如何在幕后工作的?

 const halogen = { sing: function() { console.log('I can sing'); } } const balloon = new Object(halogen); balloon.read = function() { console.log('I can read'); } halogen.read();

When you call the Object constructor with an argument that isn't null or undefined , it doesn't create a new object (not even when you use new , surprisingly; spec link ), it just converts the argument to object if it isn' t 已經是 object 並返回它。 由於halogen已經指的是 object,因此不需要轉換,您基本上是在做balloon = halogen ,它們最終都指的是同一個object。

您可能打算使用Object.create ,它創建一個新的 object 並分配您提供的 object 參數作為新對象的原型:

 const halogen = { sing: function() { console.log("I can sing"); }, }; const balloon = Object.create(halogen); balloon.read = function() { console.log("I can read"); }; console.log(typeof halogen.read); // undefined console.log(typeof balloon.read); // function console.log(typeof balloon.sing); // function

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM