我正在研究这个animation function,但我有一个问题。我似乎无法执行应该是一件容易的事情,我无法得到一个对象的长度。如果你看看那个jsFiddle,你可以看到我正在运行alert(properties.length);
,它返回undefined
。任何人都可以看到为什么这可能是?JavaScript对象文字长度=== undefined?
回答
JavaScript对象根本就没有有length
财产,只有Arrays
做。如果你想知道在一个对象上定义的属性的数量,你必须迭代它们并对它们进行计数。
此外,您for in
循环容易出现错误,由于延长Object.prototype
,因为在将遍历完整原型链并列举是链上的所有属性。
例
// Poisoning Object.prototype
Object.prototype.bar = 1;
var foo = {moo: 2};
for(var i in foo) {
console.log(i); // logs both 'moo' AND 'bar'
}
你必须使用hasOwnProperty方法的对象上,以过滤掉那些不需要的性质。
// still the foo from above
for(var i in foo) {
if (foo.hasOwnProperty(i)) {
console.log(i); // only logs 'moo'
}
}
许多JavaScript框架在那里延长原型,没有使用hasOwnProperty
往往导致可怕的错误。
更新
关于你的代码是不是制作动画这两个属性的实际问题。
for(var p in properties) {
...
for(var i = 0; i <= frames; i++)
{
setTimeout((function(exti, element) {
return function() {
// p gets overriden by for outer for in loop
element.style[p] = original + (pixels * exti) + 'px';
}
// you need to pass in a copy of the value of p here
// just like you do with i and element
})(i, element), i * (1000/60), element);
}
....
}
对象没有长度,如果需要的话,您需要使用数组。
如果你必须要找到一个对象的属性的数量,只有一个办法:
var length =0;
for(var i in obj) length++;
请使用hasOwnProperty。 – 2011-01-14 11:31:37
为什么,怎么样? hasOwnProperty适用于此? – Olical 2011-01-14 11:38:55
更好的只是*不*更新Object.prototype?谁做的?这实际上是一个很好的例子! – 2012-03-06 17:56:09
如果您正在使用Underscore.js,您可以使用_.size()
:
_.size({one : 1, two : 2, three : 3});
=> 3
这Node.js和受新环境的支持。
var obj = {a: "a", b: "b"};
Object.keys(obj).length // 2
这里的@Junaid卡迪尔Shekhanzai对“发现一个物体的长度”(这是我们被告知,应该适当地称为“计数的对象的性质”)一般功能。它结合@Ivo韦策尔和@马丁耶斯佩森解决方案:
function countProperties(myObj){
var length = 0;
if(typeof myObj != 'object'){
return false;
}
for(var i in myObj) {
length++;
}
return length;
}
- 1. div的Javascript长度说undefined
- 2. JavaScript对象 - 数字键字面值undefined
- 3. Javascript Array对象undefined
- 4. AWS Lambda Javascript JSON对象undefined
- 5. JavaScript对象数组,长度= 0
- 6. 字符长度Javascript
- 7. 打字稿中的对象长度?
- 8. 文档对象的大小或长度
- 9. PHP Array对JavaScript的长度
- 10. javascript中的对象和对象文字
- 11. 动态对象的长度
- 12. jQuery对象undefined
- 13. JSON对象,undefined?
- 14. JSON对象undefined
- 15. 当使用javascript对象时,“G is undefined”
- 16. 返回undefined的Javascript对象方法?
- 17. Javascript函数类对象返回undefined
- 18. JavaScript的对象属性日志undefined
- 19. 的getJSON JavaScript函数返回undefined对象
- 20. 的Javascript字段值长度
- 21. 延长Javascript日期对象
- 22. 如何将JavaScript对象文字的字符串转换为JavaScript对象文字?
- 23. Javascript中对象的长度属性有什么用?
- 24. AngularFire - Firebase对象undefined
- 25. JavaScript长度函数在文本字段上抛出错误
- 26. JavaScript Cookie长度
- 27. 无法读取undefined的proprety长度?
- 28. 的Javascript/jQuery的不确定对象长度
- 29. 负面对象的长度可能在JavaScript或underscore.js中?含义?
- 30. 对象文字中的Javascript对象字面量
可能重复的[使用Javascript关联数组长度](http://stackoverflow.com/questions/5223/length-of-javascript-associative-array ) – ripper234 2012-01-31 10:15:26