替代try / catch来检查javascript中是否存在函数

时间:2011-11-01 01:06:34

标签: javascript try-catch

使用以下语句是因为可能无法始终定义相关方法(refreshPartyList())。

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

目前使用上述方法并且工作正常,但有更好的选择吗?

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

您可以使用简单的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') {

答案 2 :(得分:1)

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

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