我如何确保"这个"指向正确的对象?

时间:2015-03-19 15:15:17

标签: javascript jquery this

我正在建立一个菜单模块。 在第一个文件slideout.js中,我创建了一个对象,该对象具有一个原型,其方法是切换,打开和关闭。

在第二个文件中,我尝试使用该菜单模块通过jquery事件处理程序访问其原型上的方法。

问题是,"这个"在menu.toggle中现在将引用jquery对象而不是对象。我理解这一切。

我的问题是,解决这个问题的最佳方法是什么? 它在执行menu.toggle.bind(menu)时有效,但这似乎是错误的。我也可以通过创建一个匿名函数,然后调用menu.toggle来解决它。但这似乎同样错了。

我的直觉说,我应该在slideout.js中解决这个问题。

slideout.js

'use strict';

var proto = {
    isOpen: false,
    toggle: function() {
        return this.isOpen ? this.close() : this.open();
    },
    open: function() {
        this.isOpen = true;
        return this;
    },
    close: function() {
        this.isOpen = false;
        return this;
    }
};

module.exports = function(options) {
    var obj = Object.create(proto);

    return obj;
};

main.js

'use strict';

var slideout = require('./slideout'),
    $ = global.jQuery;

module.exports = function() {
    var menu = slideout();

    $('.js-main-menu-trigger').on('click', menu.toggle);
};

0 个答案:

没有答案