计算对象函数内另一个对象的长度 属性 -- 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
我是 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