【问题标题】:How to check if an object has a function? (DoJo)如何检查对象是否具有功能? (道乔)
【发布时间】:2013-02-04 09:27:32
【问题描述】:
var testObj = this.getView();

在我实际尝试调用 callableFunction() 之前,如果 testObj 有 callableFunction 并且如果它不存在则失败,我该如何检查 DoJo(或只是原生 JS)?我更喜欢原生 DoJo 解决方案,因为我需要它在所有浏览器上工作。

【问题讨论】:

    标签: javascript dojo


    【解决方案1】:

    你可以这样称呼它:

    testObj.callableFunction && testObj.callableFunction();
    

    或详细说明:

    if (typeof testObj.callableFunction == 'function') {
        testObj.callableFunction();
    }
    

    【讨论】:

    • @dfsq 这不应该是 === 'function' 吗?
    • @Ethan 在他的情况下,使用 == 是安全的,因为 typeof 运算符总是返回字符串类型。但是,如果您在项目中使用 ===,那么为了一致性起见 - 是的。
    • @dfsq 感谢您的澄清。因此,如果我们需要检查不存在,我们可以轻松地执行 == "undefined"。
    【解决方案2】:

    dojo 有一个可以用来执行测试的函数。

    require(["dojo/_base/lang"], function(lang){
    
      var testObj = this.getView();
      if(lang.isFunction(testObj.callableFunction)){
        testObj.callableFunction();
      }
    
    });
    

    【讨论】:

      【解决方案3】:

      您应该测试该属性是否存在并且是一个函数:

      var returnFromCallable = typeof testObj.callableFunction === 'function' &&
          testObj.callableFunction();
      

      【讨论】:

        猜你喜欢
        • 2015-10-18
        • 1970-01-01
        • 1970-01-01
        • 2020-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-30
        • 1970-01-01
        相关资源
        最近更新 更多