0

我完全意识到这段代码在 javascript 的本质上有点奇怪,但是看看它:

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]();  
4

1 回答 1

3

您不能同时定义一个数组并访问它的值,因为在创建时,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]();

见工作小提琴:http: //jsfiddle.net/amyamy86/5k57X/

于 2013-03-22T05:23:00.880 回答