Winter博文中關於JavaScript原型的練習題解釋?

時間 2021-06-01 00:53:50

1樓:巴神

Class.prototype=new Class()這句是用新例項賦值給Class.prototype這時候所有instancof Class的例項的_proto_都指向了這個new Class()的例項相當於改變了例項原型鏈的引用,

例項的_proto_指向Class,Class._proto_指向Class.prototype,

然而此時查詢其可列舉屬性prop的時候,原型鏈是一層一層找的。

2樓:

把new前後的prototype儲存下

var oldProto = Class.prototype

var newProto = Class.prototype = new Class

1. oldProto,new之前的Class.prototype

2. newProto,new之後的Class.prototype

new Class時,將 __proto__指向它(this)的 constructor.prototype,也就是oldProto .

這一步效果newProto.__proto__ === oldProto = true

然後再把newProto 覆蓋 Class.protype 的舊值 oldProto.

3樓:

Class.prototype.__proto__ 其實就是 Object,你 new 出來的物件,一層一層的往上遞迴都指向它。

Class.prototype.__proto__.prop=1;這一句使得所有沒設定過 prop 屬性物件的 prop 屬性都輸出 1。

後面的花樣就不重要了。

4樓:RednaxelaFX

function

Class

()var

classProto

=Class

.prototype

console

.log

(classProto

.__proto__

===Object

.prototype

)// true

classProto

.__proto__

.prop=1

varclassNewProto

=Object

.create

(classProto

,{})

// emulate new

console

.log

(classNewProto

.__proto__

===classProto

)// true

Class

.prototype

=classNewProto

varinst

=Object

.create

(Class

.prototype

,{})

// emulate new

console

.log

(inst

.__proto__

===classNewProto

)// true

console

.log

(inst

.__proto__

.__proto__

===classProto

)// true

console

.log

(inst

.__proto__

.__proto__

.__proto__

===Object

.prototype

)// true

console

.log

(Object

.getOwnPropertyDescriptor(Object

.prototype

,"prop"

))// Object

5樓:Belleve

他是在考察你 new 算符的定義。答案是 1,因為 Class.prototype.__proto__.__proto__.prop = 1。

關於Java中的ConcurrentHashMap的實現原理有大神可以詳細介紹下嗎?

meteor the張 1.7陣列 hashmap,cas rentrantlock 分段鎖1.8陣列 鍊錶 紅黑樹,synchronized cas 優化版的hashmap luoxn28 可以看下這個 mmwx 沒人講1.8版,那我來講講吧。1.8版本相比1.7版本,沒有了分段鎖的概念,轉而使用...

關於java中throw的疑問?

逗泥丸的平方 你太難為人家了,你知道函式必然異常,但是編譯器只能知道函式宣告了異常。就好像你寫if true,當然現在ide也會提示你,但是這的確沒有也沒必要成為語法錯誤 蔣繼發 你在 Code 中執行 throw new Exception,編譯器在語法檢查階段就確定了第 8 行無法到達,所以提示...

關於java瘋狂講義這本書?

紫檸檬 挺好的一本書,買了幾年了,大學時沒怎麼看在吃灰 可能那時看,也感覺無聊乏味,講的太細了 工作後再回頭看,感覺挺好的,講的挺詳細的,有些地方你可能知道那樣用,但是不知道為什麼。比如靜態成員 方法,構造器,變數 不能使用非靜態成員 通俗點講就是靜態方法不能使用非靜態變數 書裡詳細的說了為啥不能。...