[英]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.