2013-02-19 15 views
33
var testObj = this.getView(); 

Làm cách nào tôi có thể kiểm tra với DoJo (hoặc chỉ JS gốc) nếu testObj có callableFunction trước khi tôi thực sự cố gọi callableFunction() và không thành công nếu không có? Tôi thích giải pháp DoJo gốc hơn vì tôi cần nó để làm việc trên tất cả các trình duyệt.Cách kiểm tra xem đối tượng có chức năng không? (DoJo)

Trả lời

78

Bạn có thể gọi nó như thế này:

testObj.callableFunction && testObj.callableFunction(); 

hoặc chi tiết:

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

Cảm ơn! công trình này :) – antonpug

+0

bạn được chào đón :) – dfsq

+0

@dfsq Không phải đây là chức năng === '? – Ethan

2

Bạn nên kiểm tra rằng tài sản tồn tại và là một chức năng:

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

võ đường có một hàm mà bạn có thể sử dụng để thực hiện kiểm tra.

require(["dojo/_base/lang"], function(lang){ 

    var testObj = this.getView(); 
    if(lang.isFunction(testObj.callableFunction)){ 
    testObj.callableFunction(); 
    } 

});