如何在JavaScript中从同一对象获取属性值?

4

如果我有以下javascript代码:

var x = {
    "a" : function(q) { return q+1; },
    "b" : function(w) { return (this["a"])(1); } 
};

我想做一些事情,比如从同一个对象的不同属性中访问函数。 例如,在上面的代码中,属性 a 应该没问题,但是在属性 b 中,我想使用存储在 a 中的函数。目前我只是用了 this["a"],但可能不起作用。但我能否找到一种方法获取那个函数呢?

谢谢


你得到了我的第1001个投票。恭喜!等等...不对。用户说我有871个投票,但评论>徽章的显示却是1001个...奇怪。 - bjb568
3个回答

4
你现在拥有的东西可以用。通过这个 JSFiddle,你可以查看你的对象。 Javascript
var x = {
    "a" : function(q) { return q+1; },
    "b" : function(w) { return (this["a"])(1); } 
};

document.body.innerHTML = x.b();

调用x.b()的结果为2。

更复杂的对象也可以这样做,例如:

var myObj = {
    myFunction: function(testVar)
    {
        return this.Utilities.helperFunction(testVar);
    },
    Utilities: {
        helperFunction: function(anotherVar)
        {
            return anotherVar * 2;
        }
    }
}

您可能还注意到,在第二个示例中,我使用了不同的语法来获取对象的属性。您可以使用this["a"]this.a,它们都返回相同的结果。当您想要传递变量来获取属性或函数时,您会使用this["a"]
更多关于this关键字的信息,请参见此处

使用 this.a(1) 更加简洁。 - jfriend00
是的,没错。我只是复制了他的例子。请查看我的第二个例子,那里使用了这种语法。 - Turnerj

0

只需要将它打印到显示器上:

var x = {
        "a" : function(q) {
            return q+1;
        },

        "b" : function(w) {
            return (this.a)(1);
        }
    };

    document.write(x.b(1));

0

看看这个很棒的概述:“this”关键字是如何工作的?

它沿着链路向上一级;在函数内部,this是函数上一级的作用域,所以在x.b=function(){this //}的情况下,this向上查找作用域并到达x


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接