我正在研究這個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