js關於Function和Object的原型的理解

2022-09-12 09:15:08 字數 889 閱讀 1641

我們在** function 和 object 的關係之前。可以先不討論 object的特殊性,先考慮function的特殊性。

我們在 小紅書資料型別一章講到 object 通過物件直面量和 通過建構函式的方式建立的 物件例項是有差別的。我們先通過**來感受一下這些差別

function

object()

var obj = new

object()

var obj2 ={}

console.log(obj)

// console.log(obj2) //

{}

明顯可以看出,通過建構函式建立物件,是需要通過作用域鏈進行查詢的。而{}可以免去作用域鏈查詢。 所以本質上 object 和 普通的建構函式沒有本質的區別。 同樣包括array ,regexp,date等 都可以理解為function的例項。具有所有普通建構函式的特性

這樣可以按照下圖理解

也就是說,可以把object理解為function的例項

但是 function 和 object 的關係究竟是什麼樣的呢,今天在控制台打出來乙個object例項,然後順著原型鏈一直找,終於理清了function和object的關係

先上圖最有趣的關係 在加粗的線表示出來的地方,也就是function可以看作是自己的例項,然後function原型的隱式原型__proto__指向object的prototype。也就是說function的原型可以看作是object的例項。

接下來進行驗證

js 關於function 的所有疑惑點

解決 什麼時候什麼樣的引數傳遞,會修改外部引數。1.引數傳入function的過程,是乙個值複製的過程。但是引用物件 object array function 儲存的是,指標位址,所以傳入的也是指標位址。這樣,記憶體中就保持了兩個相同的位址,指向同乙個物件。詳細解釋下 function 傳參過程 ...

js基礎 function型別

1 函式宣告方式 1 普通宣告方式 function box num1,num2 2 使用變數初始化函式 var box function num1,num2 3 使用function建構函式 var box new function num1 num2 return num1 num2 不推薦 2...

關於ob輸出有關問題

關於ob輸出問題 ob start echo str repeat 4098 for i 65 i 70 i 請問以上 在ie,ff下均正常,可以依次輸出abcde,而在谷歌瀏覽器下無法依次顯示,而是一次輸出abcde,原來以為是谷歌快取過大加大str repeat 為9000後仍是一次輸出,不知道...