![](/img/trans.png)
[英]Should this be stored in a variable when referencing to an objects methods? (JavaScript)
[英]Variable methods in Javascript objects
当我有一个带有该方法名称的变量时,我想检查是否存在 JavaScript 方法。
使用 PHP 我可以这样做:
$method = 'bar';
$object = new Foo;
if(method_exists($object, $method))
{
//Foo->bar()
}
如何在 JavaScript 中做到这一点? 我的第一次尝试失败了:
var method = 'bar';
if(typeof(obj.method) != "undefined")
{
obj.method();
}
else
{
obj.default();
}
检查属性的类型是否为"function"
,使用method
作为key进入obj
typeof
:
((typeof obj[method] === "function") ? obj[method] : obj.default)();
我通常只做if(obj.method) {...}
但你总是可以使用 try/catch:
try {
obj.method();
} catch(e) {
// obj or obj.method didn't exist, so let's try plan b
obj.planB();
}
(obj[method] || obj.default)();
如果你想单行它也可以。
['blah']
和.blah
在 Javascript Object 中是等价的,所以你可以调用你的方法
obj[method]();
其中 method 是一个字符串,其中包含要调用的方法的名称。
您应该将对象的方法属性设置为typeof为function 。 例如
if (typeof(obj[method]) == "function") {
obj[method]();
}
这是解释如何检查 function 的 JSFiddle。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.