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这个
,它显示了窗口中的所有内容,而不是这个
。不管怎么说,这对我很有效。