0

你好我有这段代码可以正常工作

var app = {

    callback: null,
    jqmReady: null,
    pgReady: null,

    // Application Constructor
    initialize: function(callback) {
        this.callback = callback;
        this.jqmReady = $.Deferred();
        this.pgReady = $.Deferred();
        this.bindEvents();
    },

    bindEvents: function() {
        document.addEventListener('deviceready', app.pgReady.resolve, false);
        $(document).on("pageinit", app.jqmReady.resolve);
        $.when(app.jqmReady, app.pgReady).then(app.isReady);
    },

    isReady: function() {
        app.callback();
    }

};

代码被初始化是这样的:

    app.initialize(function(){
        navigator.notification.alert('Hello there!', function(){}, 'Notify', 'Ok');
    });

但是我的 isReady 函数一开始是这样的,并且没有调用回调:

    isReady: function() {
        this.callback();
    }

为什么会这样?this = app内部isReady()的范围不是initialize()函数中的吗?有人可以向我解释为什么它不起作用this.callback()吗?

4

1 回答 1

1

您创建了一个对象,而不是类或类的实例。在整个初始化函数中更改this为。app你已经在你的isReadybindEvents函数中这样做了。所以保持下去initialize

于 2013-09-17T12:24:20.550 回答