如果我在javascript中有这个
var x = {
"a" : function(q) { return q+1; },
"b" : function(w) { return (this["a"])(1); }
};
我想做一些事情,比如来自同一个对象但不同属性的访问函数。
例如,在上面的代码中,属性a
应该没问题,但在属性b
中,我想使用a
中存储的函数。目前为了好玩我只有this["a"]
这可能不起作用。但是我有办法获得这个功能吗?
由于
答案 0 :(得分:4)
你实际上有什么用。在这里查看this fiddle与您的对象..
<强>的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"]
的原因是您希望传递变量以获取属性或函数。
答案 1 :(得分:0)
只需要将其打印到显示屏上:
var x = {
"a" : function(q) {
return q+1;
},
"b" : function(w) {
return (this.a)(1);
}
};
document.write(x.b(1));
答案 2 :(得分:0)
请看这个很棒的概述:How does the "this" keyword work?
它在链条上升了一层;在函数内部,this
是功能上方的下一级范围,因此在x.b=function() {this //}
的情况下,this
看起来在范围上1级并且到达x
。