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

Counting length of another object property within object function -- JavaScript?

我是 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 属性 的长度。但是,它 returns undefined。我做错了什么?

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

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

.keys() method本质上是returns对象键的数组。

在这种情况下,Object.keys(this.elementSources) returns:

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

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

为了访问js数组中的长度属性,BIG O总是等于1。 因为当您更新数组时,长度 属性 将随之更新 但在那种情况下,大 O 的大小与对象相同,并且 (O) = n