Javascript从字符串动态调用对象方法
我可以动态调用方法名为字符串的对象方法吗?我会这样想:Javascript从字符串动态调用对象方法,javascript,oop,dynamic,methods,invoke,Javascript,Oop,Dynamic,Methods,Invoke,我可以动态调用方法名为字符串的对象方法吗?我会这样想: var FooClass = function() { this.smile = function() {}; } var method = "smile"; var foo = new FooClass(); // I want to run smile on the foo instance. foo.{mysterious code}(); // being executed as foo.smile(); 如果属性的名
var FooClass = function() {
this.smile = function() {};
}
var method = "smile";
var foo = new FooClass();
// I want to run smile on the foo instance.
foo.{mysterious code}(); // being executed as foo.smile();
如果属性的名称存储在变量中,请使用
[]
foo[method]();
可以通过数组表示法访问对象的属性:
var method = "smile";
foo[method](); // will execute the method "smile"
方法可以通过eval调用
eval(“foo.”+方法+“()”)代码>
可能不是很好的方法。当我们在对象内调用函数时,我们需要以字符串形式提供函数名
var obj = {talk: function(){ console.log('Hi') }};
obj['talk'](); //prints "Hi"
obj[talk]()// Does not work
我想在这里留下一个例子。例如我想在提交表单时调用一个动态检查方法
提交
$('form')。关于('submit',函数(e){
var beforesmit=$(this.attr('data-beforesmit');
如果(提交前){
params=beforesmit.split(“.”);
objectName=params[0];
methodName=params[1];
结果=窗口[objectName][methodName]($(this));
如果(结果!==真){
e、 预防默认值();
}
}
});
var MyObject={
myMethod=函数(形式){
console.log('worked');
返回true;
}
};
在函数中使用变量对我不起作用:const genericResolver=(表、操作、值)=>{return Auth.isAuthenticated()。然后(()=>{return eval(table).findAll()如果要从类中的另一个方法执行方法,请使用此['methodName']()。获取这个丑陋的错误元素隐式地具有“any”类型,因为类型“string”的表达式不能用于索引类型“FooClass”
任何其他人?为代码提供一些注释总是很有帮助的,这样就可以在上下文之外理解它。添加了一些注释。谢谢!在我的例子中,foo
是{fields:[{id:1}]}
和方法
是字段[0]?.id
,但我必须从您建议的答案中删除()