回答
當然。
var arr = [1,2,3,4,5];
arr.prop = 'value';
數組是已經在JavaScript對象 - 他們只是有一些額外的功能和特殊的文字語法。
將我的屬性迭代其餘的元素?因爲在console.log中,我沒有看到它帶有不透明的文本,如「長度」 – ellabeauty 2012-03-31 01:12:50
當你使用'for(var key in arr)'時,它們將被迭代。但是這是你不應該在數組上使用的東西,所以它不應該成爲你的問題。如果你使用'for in'循環,'for(var i = 0; i
將被迭代。在常規的'for'循環中,它不會 - 因爲你只能通過它的數組索引訪問每個成員。它也不會被像'forEach'這樣的本地數組ES5方法迭代。 – 2012-03-31 01:17:52
是的。您可以通過只宣佈他們將它們添加到對象,你也可以使用Array.prototype
var j = new Array();
j.yourprop = "foo";
'var j = [];'更好。 – ThiefMaster 2012-03-31 01:17:02
是的,我同意我的方式很爛 – 2012-03-31 01:21:26
我更喜歡'var j =(function(array){return new array();}(window.Array))' – 2012-03-31 01:23:33
至於其他的答案狀態擴展陣列,這是完全可能的,因爲在JavaScript數組都只是對象。然而,這是否是一個好主意還存在一個問題。
這是一個「編碼風格」的問題,所以很難客觀地說,但道格拉斯克羅克福德沒有問題(至少在某些情況下)。在JavaScript: The Good Parts中,他實際上使用了將「全部」方法添加到數組的示例。
因爲數組實際上是一個對象,我們可以直接添加的方法,以一個單獨的陣列:
// Give the data array a total function data.total = function() { return this.reduce(add, 0); }; total = data.total(); // total is 108
由於串
'total'
不是整數,加入total
屬性到一個數組不變化它的長度。
(P62,克羅克福德的「JavaScript的好的部分」,在Google Books發現)
然而,值得一提的是,這些額外的屬性不包括在JSON序列化,如果你這樣做會被扔掉像arr = arr.slice(1);
之類的東西。
感謝您的參考。 – 2015-01-29 17:51:52
另外,如果數組經過其任何原型方法(映射,過濾器等),則該屬性將不會被轉移到新數組中,因爲該方法被放在'Array'的一個實例上。在這種情況下可能會有預期但可能不合意? – 2016-01-26 15:59:32
如果你打算把它藏在一個數組等? [至少這是我所期待的。]
Object.defineProperty(targ, "myVal", { enumerable: false, writable: true });
則數組不就那麼這是一個財產不是我想你可以說一個值添加到長度。
然後,如果您想查看對象中的鍵,Object.keys將不會看到它,但Reflect.ownKeys會。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/ownKeys
的反映defineProperty的版本將返回成功或失敗,而對象的返回傳入的對象。
記住preventExtensions會(像它說的)阻止你或他人擴展它們。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/preventExtensions
- 1. 將OnClick屬性添加到數組javascript
- 2. 將數組屬性添加到implode()
- 3. 將值添加到javascript中的數組(?)中的特定屬性
- 4. 如何將屬性添加到嵌套的JavaScript數組(對象)?
- 5. javascript-向數組對象添加屬性
- 6. Javascript將新屬性添加到元素
- 7. 將javascript添加到iframe src屬性
- 8. 將屬性添加到屬性
- 9. Magento將Sub屬性添加到屬性?
- 10. 將屬性添加到TTPhoto
- 11. 將屬性添加到Q_PROPERTYs
- 12. 將屬性添加到IXmlNode
- 13. 將屬性添加到TreeNode
- 14. 將屬性添加到UITableViewCell
- 15. 將屬性添加到DataColumn
- 16. 將屬性添加到BehaviorExtensionElement
- 17. 將屬性添加到wp_get_attachment_image
- 18. 將屬性添加到EventArgs
- 19. 將屬性添加到GeoJSON
- 20. 將sourceLocation屬性添加到函數中?
- 21. 將XML屬性添加到數據集
- 22. 將屬性添加到函數中
- 23. Javascript - 如何將屬性添加到對象構造函數
- 24. 將屬性添加到JavaScript函數是可以接受的嗎?
- 25. Javascript將相同的屬性添加到數組中的所有對象
- 26. 將JavaScript數組值添加到DOJO div
- 27. 將javaScript數組添加到HTML頁面?
- 28. 將序列號屬性追加到javascript對象數組中
- 29. 如何將數組屬性添加到集合中?
- 30. 將對象添加到基於String屬性的數組中?
你是什麼意思*「添加自定義屬性,而不必使它們成爲對象?」*數組是ARE對象。幾乎所有的JS都是一個對象。這些屬性是什麼?你能進一步解釋嗎? – Joseph 2012-03-31 01:10:25
他們**是**物體。只是一種特殊的物體。像函數一樣,它也是一種特殊的對象。 – ThiefMaster 2012-03-31 01:15:39
另請參閱[此相關問題](http://stackoverflow.com/questions/24730145/what-are-the-drawbacks-of-setting-string-properties-on-arrays)爲什麼你不應該這樣做。 – 2014-07-14 07:14:05