У меня возникли некоторые проблемы в довольно большой части кода я пишу, и я варил к этому:Доступ «это» внутри объекта
var Thing = function(argument){
this.property = argument;
this.obj = {
func: function(){
return this;
}
};
this.func = function(){
return this;
};
};
Мне нужно получить доступ this.property
внутри obj.func()
. Тем не менее, значение this
не то, что я ожидаю, что это будет:
> var thing = new Thing("value")
> thing.func()
Thing {property: "value", obj: Object, func: function}
> thing.obj.func()
Object {func: function}
Когда я создаю экземпляр экземпляр под названием «вещь» и вызвать thing.func()
, this
имеет текущий экземпляр Thing
, как это должно быть. Но когда я звоню thing.obj.func()
, он держит значение thing.obj
. Что происходит? Как получить доступ к этому значению?
Мне нравится решение '.bind (this)', потому что это означает, что большинство моего другого кода (есть намного больше, чем я включил в вопрос), может оставаться неизменным. –
@ Dan Используйте 'bind' тщательно, он не поддерживается IE8 и ниже. – leaf