在Google Apps JS中。我想实现一个对象数组,每个对象都有属性和方法。其中一个属性需要是一个对象数组,我希望能够通过使用父数组中的方法来访问此数组。
到目前为止,我的最大努力是:
function myFunction () {
var teamNo = 3;
var allNames =["n1","n2","n3","n4"] ;
var createnames = function () {
var names = [];
for ( var j = 0; j <=3 ; j ++) {
(function (j) {
var localNames = ["local1-names"+j,"local2-names"+j];
names[j] = (function (player){
return {
namArr: localNames,
name: allNames[j],
addName: (function (player){
localNames.push(player);
}) (player),
team: teamNo
};
});
}) (j);
}
return names;
}
var myname = createnames();
var foo = myname[0]().namArr;
var foo1 = myname[1]().namArr;
myname[1]().addName("added");
var foo2 = myname[1]().namArr;
var foo3 = myname[2]().namArr;
var debug = true;
}
当我添加代码来实现子数组时,我得到一个运行时错误,说addName不存在。
答案 0 :(得分:2)
您立即调用此方法:
addName: (function (player) {
localNames.push(player);
})(player)
而不是分配它:
addName: function (player) {
localNames.push(player);
}
此外,每个names[]
函数都需要player
,addPlayer()
函数也是如此,这使得names[]
参数无法访问。如果您不打算将任何内容传递给names[]
函数,请删除参数。
我建议使用命名函数而不是内联IIFE。