我有一个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);
}