function _Class(){
this.test_obj = {
init: function(){
document.onmousedown = this._mousedown;
},
_mousedown: funtion(){
//!!! Как отсюда правильно обратиться к объекту test_obj?
}
}
}
var Init = new _Class();
Init.test_obj.init();
Стандартный для таких случаев трюк - запомнить this в замыкании:
function _Class(){
const _this = this;
this.test_obj = {
init: function(){
document.onmousedown = this._mousedown;
},
_mousedown: function(){
console.log(_this.test_obj);
//!!! Как отсюда правильно обратиться к объекту test_obj?
}
}
}
var Init = new _Class();
Init.test_obj.init();
Init.test_obj._mousedown();
Еще как варинат, воспользоваться bind:
function _Class(){
this.test_obj = {
init(){
document.onmousedown = this._mousedown.bind(this);
},
_mousedown(){
//!!! Как отсюда правильно обратиться к объекту test_obj?
console.log(this);
}
}
}
var Init = new _Class();
Init.test_obj.init();
Еще один вариант, как избавиться от потери this - обернуть вызов метода в стрелочную функцию:
function _Class(){
this.test_obj = {
init(){
document.onmousedown = () => {
this._mousedown()
};
},
_mousedown(){
//!!! Как отсюда правильно обратиться к объекту test_obj?
console.log(this);
}
}
}
var Init = new _Class();
Init.test_obj.init();
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Товарищи, использую этот плагин, для перевода сайта на разные языкиВопрос: как добраться до this
В консоли отладчика при попытке загрузить страницу появляется сообщение: