计算对象函数中另一个对象属性的长度 - JavaScript?

时间:2015-12-06 17:14:12

标签: javascript javascript-objects

我是JavaScript对象的新手,所以请耐心等待。

这是我的JavaScript:

var dragSources = {
  elementSources: {
    squareSource: document.getElementById('squareSource'),
    circleSource: document.getElementById('circleSource')
  },
  ifDragSource: function(elem) {
    console.log(this.elementSources.length);
  }
};

如果你看一下console.log(this.elementSources.length);,你可能会说我想要获得elementSources财产的长度。但是,它返回undefined。我做错了什么?

2 个答案:

答案 0 :(得分:1)

它是一个对象,而不是一个数组,因此它没有length属性。

您可以使用Object.keys(this.elementSources).length来获取密钥数量。

.keys() method本质上返回对象键的数组。

在这种情况下,Object.keys(this.elementSources)会返回:

["squareSource", "circleSource"]

然后我们只得到该数组的长度,即2。

var dragSources = {
  elementSources: {
    squareSource: document.getElementById('squareSource'),
    circleSource: document.getElementById('circleSource')
  },
  ifDragSource: function(elem) {
    console.log(Object.keys(this.elementSources).length);
  }
};

dragSources.ifDragSource(); // 2

答案 1 :(得分:0)

从技术上讲,如果您需要代码中的length属性,则必须将长度值直接存储在对象中。 使用Object.key函数会降低代码效率。 每次调用该函数来访问该值时,都必须反复重新运行相同的函数。

为了访问js数组中的length属性, BIG O 始终等于1。  因为更新数组时,length属性会随之更新 但在这种情况下,大O将是对象的大小和(O)= n