怎麼理解JS原型鏈中Function原型物件的 proto 指向Object的原型物件?

時間 2021-06-01 05:21:23

1樓:冷月騎士

不僅如此, Function.constructor === Function 也是成立的,加上你的問題,也就是下圖中紅線部分,都是成立的。。

非常直觀的說明了以下問題:

1.JS中,一切皆物件 ,任何乙個值,不管是什麼型別,最後都能鏈路到 Object

2.函式是一等公民(畢竟Object 型別,也是通過Object建構函式例項化的來)

2樓:歐陽德才

要注意的點就是:prototype是函式的內建屬性,_proto_是物件的內建屬性。這兩個都是指標,指向同乙個原型物件,即例項的_proto_指向構造它的建構函式的prototype指向的原型物件。

舉個栗子:

var Person=function(){}var xiaoming=new Person();

console.log(xiaoming._proto_== Person.prototype) //輸出true

3樓:dboy

Function.__proto__ => function() {} 是乙個匿名函式

匿名函式(其實所有函式)是物件

所有物件都有__proto__屬性,這就是所謂「原型鏈」

原型鏈的最開始是乙個物件,這個物件「是」乙個Object例項,而不是Object,Object自己是乙個建構函式(類)

所以Function.__proto__.__proto__ 「是」JS的最原始的那個物件,而這個原始的物件,是從Object構造而來的。

js 原型鏈怎麼理解?

江南公子旭 function animal function dog animal.price 2000 dog.prototype animal 解 因為這裡這是將這個函式的prototype屬性賦值成了 animal 並不是他 new 出來的乙個物件 所以animal 不是他的建構函式 所以do...

如何理解原型鏈中的setter和屬性遮蔽之間的關係?

卓怡 這個問題我弄明白了,自己回答一下吧 varanotherObject getb a 2 varmyObject Object create anotherObject 對myObject操作 myObject.a 7 呼叫了setter,但是myObject.a 的仍然是7但是如果對c操作的話...

JS中的作用域鏈是在什麼時候建立的?

前端小胖 作用域鏈說白了就是作用域的集合 子集可以訪問父集,父集不能訪問子集 1 函式在執行的過程中,先從自己內部尋找變數2 如果找不到,再從建立當前函式所在的作用域去找,從此往上,也就是向上一級找。案例 function fn fn2 fn1 fn JS作用域分為兩種一種是區域性 function...