从对象内的字符串调用函数?

Wes*_*ley 7 javascript string jquery function object

我在字符串中有一个函数名称:

 var func = "doTest";
Run Code Online (Sandbox Code Playgroud)

我需要将此函数应用于当前实例("this");

所以我需要它来打电话:

 this.doTest();
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?我不能通过窗户.

谢谢,韦斯利

med*_*iev 22

只需使用构造object[functionName]();,如下所示:

function Person() {};
Person.prototype.speak = function() { alert('ohai'); };
var john = new Person, action = 'speak';

john[action]();
Run Code Online (Sandbox Code Playgroud)

另类风格:

var Person = {  
  speak: function() { alert('ohai'); }, 
  speakDelegate: function() { var action = 'speak'; this[action](); } 
};
Person.speakDelegate();
Run Code Online (Sandbox Code Playgroud)


dav*_*vin 6

this[func]();
Run Code Online (Sandbox Code Playgroud)

不需要.call.apply因为上下文保留在引用中.

例如:

var obj = {
   doTest: function(){ console.log(this); },
   fn: function(){ var name='doTest'; this[name](); }
};
obj.fn(); // logs the object, proving this has the correct context.
Run Code Online (Sandbox Code Playgroud)