[英]Javascript: Functions and arrays as key/value pairs
1)在其他一些語言中,將函數定義為參數化的語句塊,在語法層面上,javascript函數也是這樣的,直到據說它可以擁有自己的屬性和方法。如何在語法上表示為鍵/值對? 函數代碼在哪里?
var x = function(a,b){alert('Hi');};
// x = { _code: "alert('Hi'), _arguments: {a:.., b:..,}}
這里的代碼和參數是我想象的內部屬性
2)如果數組是鍵/值對,我可以認為數組索引只是對象鍵嗎?
var a = ["elem1", "elem2"];
// a = {0: "elem1", 1: "elem2"}
擴展我的評論,即 JavaScript 中的一切都是一個對象。
var arr = [
function () {
console.log("Well... Look at that.");
}
];
var obj = arr[0];
obj();
var newObj = Object.assign({}, arr);
console.log(newObj);
newObj[0]();
它如何在語法上表示為鍵/值對?
它不能。
函數的可執行代碼不是根據對象的屬性來表達的。
函數代碼在哪里?
這是 JavaScript 引擎的實現細節,而不是以標准方式向 JavaScript 代碼公開的內容。
如果數組是鍵/值對,我可以認為數組索引只是對象鍵嗎?
他們只是性能。 看規格:
數組對象對特定類別的屬性名稱給予特殊處理。 當且僅當 ToString(ToUint32(P)) 等於 P 且 ToUint32(P) 不等於 2 32 -1 時,屬性名稱 P(以字符串值的形式)是數組索引。 屬性名稱為數組索引的屬性也稱為元素。 每個 Array 對象都有一個 length 屬性,其值始終是一個小於 2 32的非負整數。 length 屬性的值在數字上大於名稱為數組索引的每個屬性的名稱;
… 等等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.