如何像对象一样使用`this`并通过字符串获取其变量/函数?

时间:2016-10-08 17:07:52

标签: javascript object this

我有一个对象。

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的一部分。

有没有人知道我该怎么做?

提前致谢!

1 个答案:

答案 0 :(得分:-1)

事实证明,当你通过this['functionName']获得该功能时,this并未绑定它。

这意味着你不能在任何一个如上所述的函数中使用this.foo

要解决此问题,我使用了以下代码:

this["do" + thing].bind(this)();

而不是this["do" + thing]();

JSFiddle:https://jsfiddle.net/auk1f8ua/