Javascript:函数和数组作为键/值对

时间:2017-02-12 19:07:10

标签: javascript arrays function

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"}

2 个答案:

答案 0 :(得分:0)

扩展我的评论,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]();

答案 1 :(得分:0)

  

如何在语法上表示为键/值对?

它不能。

函数的可执行代码不是根据对象的属性表示的。

  

功能代码在哪里?

这是JavaScript引擎的实现细节,而不是以标准方式暴露给JavaScript代码的东西。

  

如果array是键/值对,我认为数组索引只是对象键吗?

他们 只是属性。见the specification

  

Array对象对某类属性名称进行特殊处理。当且仅当ToString(ToUint32(P))等于P且ToUint32(P)不等于2 32 时,属性名P(以String值的形式)是数组索引。 -1。属性名称为数组索引的属性也称为元素。每个Array对象都有一个length属性,其值始终是小于2 32 的非负整数。 length属性的值在数值上大于名称为数组索引的每个属性的名称;

......等等。