用于检查javascript中是否存在函数的try/catch替代方案

Alternative to try/catch for checking if a function exists in javascript

本文关键字:try catch 方案 函数 javascript 检查 是否 存在 用于      更新时间:2023-09-26

之所以使用以下语句,是因为可能并不总是定义有问题的方法(refreshPartyList(((。

try {
  parent.document.getElementById("myId").contentWindow.refreshPartyList(param1, param2);
}catch(e){}

目前使用上述方法,效果良好,但有更好的替代方案吗?

var e = parent.document.getElementById("myId").contentWindow;
if(e.refreshPartyList)
  e.refreshPartyList(param1, param2);

您可以使用一个简单的if:来检查该方法是否存在

   if (parent.document.getElementById("myId").contentWindow.refreshPartyList) {
       parent.document.getElementById("myId").contentWindow.refreshPartyList(param1, param2);
   }

或者更好的是,使用jQuery(因为if不能保证它是一个函数(:

   if (jQuery.type(parent.document.getElementById("myId").contentWindow.refreshPartyList) == 'function') {
var win = parent.document.getElementById("myId").contentWindow;
win.refreshPartyList && win.refreshPartyList(param1, param2);

使用x.method && x.method(...)检查该方法是否存在。