簡體   English   中英

Javascript:函數和數組作為鍵/值對

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM