是否可以引用“实时父母”?从同一数组的函数内部调用函数's变量

Is it possible to refer to a "real-time parent" function's variable from inside of a function of the same array?

本文关键字:函数 内部 数组 调用 变量 引用 实时 父母 实时父母 是否      更新时间:2023-09-26

我完全意识到这段代码是有点奇怪的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]();  

你不能在定义数组的同时访问它的值,因为在创建的时候,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/