![](/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.