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

Javascript 如何像对象一样使用'this',并通过字符串获取其变量/函数?,javascript,object,this,Javascript,Object,This,我有个目标 function Obj() { } Obj.prototype.doSomething = function(thing) { this["do" + thing](); } Obj.prototype.doAlert = function() { alert("Alert!"); } var obj = new Obj(); obj.doSomething("Alert"); 这只是我的对象的一个缩略版本,而且要大得多 我想做的是,如果您传入'Alert

我有个目标

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()“家庭作业”
,它将运行
this.dohomography()

显然,在这种情况下,这样做是愚蠢的,但我的最终项目将完全不同

它适用于
窗口
,如下所示:

window["do" + thing]();
但我不希望它成为一个全局函数,而是希望它成为obj的一部分

有人知道我该怎么做吗


提前谢谢

事实证明,当您通过
此['functionName']
获取函数时,
未绑定到它

这意味着您不能在上面调用的任何函数中使用
This.foo

为了解决这个问题,我使用了以下代码:

this["do" + thing].bind(this)();
而不是
this[“do”+thing]()


JSFiddle:

这个[“做”+事情]()@vlaz这就是他们已经在做的事?@vlaz这是我到目前为止得到的,但似乎不起作用。现在还不清楚这个问题到底是关于什么的。打电话给你的方法在你的问题上已经起作用了。不确定还有什么问题?嗯,你的问题根本没有描述这个问题。我就是这么说的。相反,它描述的问题实际上不是问题。当您使用
this['functionName']()
时,
this
将作为方法的
this
值传递。使用
bind
是毫无意义的。我不知道为什么我必须这么做,但由于某种原因,当我没有绑定它时,我使用了
控制台。log
ged
这个
,它显示了
窗口中的所有内容,而不是
这个
。不管怎么说,这对我很有效。