Вопрос по this
Имеется некоторый объект page:
var page = {
this.header = $( "#header" );
this.title = $( "#title" );
...
func : function () {
console.log(this);
...
}
}
При вызове метода func просто как page.func () this ссылается как и надо на объект page. Но при вызове через $(window).resize ( page.func ) this ссылается на window. Собственно вопрос - как при вызове через .resize() сделать так, чтобы this ссылался на page, а не на window? |
для новых браузеров:
$(window).resize(page.func.bind(page)); для новых и старых браузеров:
$(window).resize(function(){
return page.func.apply(page, arguments);
});
|
Спасибо, помогло. Только теперь новый вопрос, и предложенный метод не работает.
Некоторые объекты создаются конструктором:
var point = function ( parameters ) {
...
this.dom.del = $( "<div>", {
"class" : "delete"
}).appendTo( page.left )
this.dom.del.click ( function () {
console.log ( $(this) )
} )
this.del = function () {
...
}
При клике на объект this.dom.del должна вызываться функция-член из этого же конструктора this.del(), но проблема в том, что при клике, в контексте .click() this будет ссылаться на объект вызвавший его - на DOM объект, у которого, естественно, нет метода .del(). Собственно вопрос - как передать в контекст .click() "правильный" this, чтобы можно было вызвать this.del(): this.dom.del.click ( this.del )? |
var point = function() {
var me = this;
this.del = function() {
}
this.click = function() {
me.del();
}
}
|
Спасибо, всё работает.
|
| Часовой пояс GMT +3, время: 19:34. |