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();
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости