Javascript 是否可以参考“a”;“实时家长”;功能';来自同一数组的函数内部的s变量?
我完全意识到,就javascript的本质而言,这段代码有点奇怪,但看看它:Javascript 是否可以参考“a”;“实时家长”;功能';来自同一数组的函数内部的s变量?,javascript,Javascript,我完全意识到,就javascript的本质而言,这段代码有点奇怪,但看看它: var arr = [ function () { this.b = "hello"; //or var b = "hello"; arr[1](); }, function () { var str = RealtimeParentFunc.b; alert(str); // want to get "he
var arr = [
function () {
this.b = "hello";
//or var b = "hello";
arr[1]();
},
function () {
var str = RealtimeParentFunc.b;
alert(str);
// want to get "hello"
}
];
// want to get "hello"!
arr[0]();
也许这是不可能的,但我想知道是否有办法做到这一点。如何获取调用同一数组中函数的数组函数的变量
更新我不得不回到这个问题上,并决定发布一个更新:当然,我不能从内部引用
arr[I]
,但我必须强调,上面的代码不应该太字面化:它只是我想要的一个演示;但如果我有一个之前在代码中定义的小“辅助”函数,看起来我可以做我想做的事情:
var a = function (i, v) {
return arr[i]()[v];
};
var arr = [
function () {
var h = "hello, ";
var n = a(2, "n");
return {
"h": h+n
}
}, function () {
var h = a(0, "h");
alert(h)
}, function () {
return {
"n": "your name"
}
}];
arr[1]();
您不能同时定义数组和访问它的值,因为在创建时,
arr2
还不存在
[function(){..},function(){..}]
数组在到达之前不会创建并设置为arr2
代码>结尾处的分号。因此,在定义arr2[1]()
时,不能引用它
在这一点上,您可以先定义数组,然后.push()
将函数放入数组中,但仍限于按顺序执行:
var arr2 = [];
arr2.push(
function () {
var b = "hello";
//arr2[1](); // CAN'T DO THIS since arr2[1] doesn't exist
return {
b: b
};
});
arr2.push(
function () {
var str = arr2[0]().b;
alert(str);
// want to get "hello"
});
// want to get "hello"!
arr2[0]();
arr2[1]();
请参阅working fiddle:您不能定义数组并同时访问它的值,因为在创建时,arr2
还不存在
[function(){..},function(){..}]
数组在到达之前不会创建并设置为arr2
代码>结尾处的分号。因此,在定义arr2[1]()
时,不能引用它
在这一点上,您可以先定义数组,然后.push()
将函数放入数组中,但仍限于按顺序执行:
var arr2 = [];
arr2.push(
function () {
var b = "hello";
//arr2[1](); // CAN'T DO THIS since arr2[1] doesn't exist
return {
b: b
};
});
arr2.push(
function () {
var str = arr2[0]().b;
alert(str);
// want to get "hello"
});
// want to get "hello"!
arr2[0]();
arr2[1]();
参见工作小提琴: