我有一个对象。
DataRowView
这只是我对象的缩短版本,而且要大得多。
我想要做的是,如果你传入IsEnabled
它会运行function Obj()
{
}
Obj.prototype.doSomething = function(thing)
{
this["do" + thing]();
}
Obj.prototype.doAlert = function()
{
alert("Alert!");
}
var obj = new Obj();
obj.doSomething("Alert");
,如果我传入'Alert'
,它将运行this.doAlert();
;
显然,在这种情况下,这样做是愚蠢的,但我的最终项目将完全不同。
它与'Homework'
这样正常工作:
this.doHomework()
但我不希望它成为一个全局函数,但要成为window
的一部分。
有没有人知道我该怎么做?
提前致谢!
答案 0 :(得分:-1)
事实证明,当你通过this['functionName']
获得该功能时,this
并未绑定它。
这意味着你不能在任何一个如上所述的函数中使用this.foo
。
要解决此问题,我使用了以下代码:
this["do" + thing].bind(this)();
而不是this["do" + thing]();
JSFiddle:https://jsfiddle.net/auk1f8ua/