我编写了一些命名空间的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()
函数。在我的应用范围内有更好的方法吗?
答案 0 :(得分:2)
Niet the Dark Absol的回答是正确且更短的,但了解call和apply来设置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`