想象以下代碼:使用Javascript:對所有對象添加方法在陣列
$.get("ajax/getColorData.php", function(data) {
this.colorData = data;
});
現在設想, '數據' 的值是:
this.colorData = [
{
colorName: 'Red',
colorIsInRainbow:true
},
{
colorName: 'Orange',
colorIsInRainbow: true
},
{
colorName: 'Magenta',
colorIsInRainbow: false
}
];
問題1
現在,在下載數據之後,假設我想爲數組中的每個條目添加一個方法「colorStartsWithR」。我「認爲」,而不是在數組的每一個成員上定義它,我可以以某種方式在原型上定義這種方法。但是,我不確定我能做到這一點,因爲這些對象不是由我創建的,而是由$ .get返回的,所以我不清楚我是否正朝着正確的方向思考。
問題2
而且把它遠一點,如果我想要一個屬性添加到陣列中的每個成員,特別是:
{
colorName: 'Magenta',
colorIsInRainbow: false,
userClickedThisColor:ko.observable()
}
這樣一來,我可以綁定(通過knockoutjs)列表幷包括一個複選框。在這種情況下,我質疑原型是否會派上用場,因爲每個成員都應該擁有自己的ko.observable屬性。一個快速的本能是做這樣的事情:
for (var i=0;i<this.colorData.length;i++)
{
this.colorData[i].userClickedThisColor=ko.observable()
}
和工作正常,但試想,有檢索顏色列表,或者用戶可以創建新的顏色實例的方法不止一種,那我上面做的定製比較複雜。我現在需要複製上面的「附加」邏輯。有更聰明的方法嗎?
我的大部分時間都花在強類型語言上,有時候這些東西對我來說並不那麼明顯。感謝您的任何建議...
-Ben
爲什麼功能添加到每個對象?只需製作一個接受對象作爲參數的函數即可。 –