想象一下以下代码:
$.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并且工作正常,但想象一下,有多种方法可以检索颜色列表,或者用户可以创建新的颜色实例,并且我在上面做的自定义更复杂.我现在需要复制上面的"附加"逻辑.有更聪明的方法吗?
我把大部分时间花在强类型语言上,有时这些事情对我来说并不那么明显.谢谢你的任何建议......
-ben