将命名空间函数用于事件侦听器

时间:2014-05-27 09:27:33

标签: javascript

我编写了一些命名空间的javascript,但我无法绑定到窗口事件(例如滚动,调整大小)并保留对应用程序实例的访问权限,例如:

var app = new function() {

  this.init = function() {
    var self = this;
    window.onresize = self.resize;
  };

  this.resize = function() {
    var self = this;
    console.log(self); // Gives me the window!
  };

};
app.init();

我宁愿不必使用window.onresize = function()...来声明函数,因为我希望能够独立地调用我的app.resize()函数。在我的应用范围内有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

Niet the Dark Absol的回答是正确且更短的,但了解callapply来设置this内部函数的值改变了我的生活!也许它对你也有帮助:

window.onresize = function() {

  // calls self.resize() with the value of `this` set to `self`
  self.resize.call(self);

};

答案 1 :(得分:1)

没有理由不能同时做到这两点:

window.onresize = function() {self.resize();};
// calls `self.resize` with the context of `self`