我是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
。我做错了什么?
答案 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