如何将JavaScript对象方法名称作为字符串参数传递



我有一个JavaScript代码,我想稍微清理一下,我试图将对象方法名称作为字符串传递,但它不起作用。有可能做到这一点吗?

var mywebkit = {
execute: function(_function, _value){
//var func = new Function(_function);
var func = new Object(_function);
try{
if(Interface("android")){
androidweb.func(_value); 
}else if(Interface("ios")){
webkit.messageHandlers.func.postMessage(_value);
}
} catch(err) {
if(DEBUG){console.log('The native context does not exist yet', err);}
}
}
};

测试JavaScript对象函数示例:

var androidweb = {
test: function(k){
console.log("value=" + k);
}
};
var webkit = {
messageHandlers: {
test: {
postMessage: function(k){
console.log("value=" + k);
}
}
}
};
function Interface(t){
return (t == "android" ? true : false);
}

用法:

mywebkit.execute("test", "This is my value");

你是指这样的计算对象属性吗
如果是,则可以将其与object[property]语法一起使用。

const prop = 'test';
const foo = {
test: () => console.log('test'),
};
foo[prop](); // logs "test"

不要忘记验证!

const prop = 'bad';
const foo = {
test: () => console.log('test'),
};
foo[prop](); // TypeError: foo[prop] is not a function

验证如下:

if (prop in foo) {
foo[prop]();
}

在你的代码中尝试做这个

/* replace this */
var func = new Object(_function);
androidweb.func(_value); 
/* with this */
if (_function in androidweb) {
androidweb[_function](_value);
}

最新更新