Я думаю, что вам нужно Dock Side из трех точек на боковой стороне консоли и ... нужно вручную расположить его в нужном месте
В JavaScript, this
представляет объект контекста, на котором функция была вызвана, не объем, в котором это было определено (или объем, в котором это назвали). Для MyFunc
, это ссылается на новый создаваемый объект; но для innerFunc
, это ссылается на глобальный объект, так как никакой контекст не указан когда innerFunc
назван.
Это имеет тенденцию сбивать с толку используемых к Java или подобным языкам OO, где this
почти всегда ссылается на экземпляр класса, на котором определяется называемый метод. Просто помните: JavaScript не имеет методов. Или классы. Просто объекты и функции.
Просто сделайте следующее:
var MyFunc = function(){
var self = this;
alert(self);
var innerFunc = function(){
alert(self);
}
innerFunc();
};
new MyFunc();
Этот путь сам будет всегда означать это, независимо от того, откуда Вы называете его, который обычно является, что Вы хотите.
Как заметка на полях, "это" не обязательно ссылается на фактическую функцию все время, так как можно вызвать функцию с "принудительным" это - ссылка, думайте об обработчике событий, в котором это обратится к фактическому элементу, который запустил событие.
использование
yourFunction.apply(thisReference, arguments)
можно вызвать его, где "это" укажет на то, что Вы передаете как первый аргумент.
На первый взгляд я сказал бы, что это - потому что внешнее, которое 'это' в отношении MyFunc и внутреннего, которое 'это' в отношении innerFunc.
Однако JavaScript не что-то, в чем у меня есть какие-то конкретные экспертные знания.
Для подробного объяснения закрытий, посещения:
http://www.brockman.se/writing/method-references.html.utf8
Г-н Brockman иллюстрирует ясно проблему, которую Вы имеете. Я прочитал эту статью время от времени просто для чистого удовольствия способности сказать, "Ага!Я понимаю!"
Для еще более интересных уроков JavaScript посетите "Wrrrld Douglas Crockford Широкая сеть" в
Как создатель JSON, г-н Crockford является "Человеком" когда дело доходит до JavaScript. Он не знает меня, но он воспитал мое понимание красоты JavaScript, нет, программирования в целом.
Вы - это близко к становлению намного лучшим программистом, чем Вы теперь. Я говорю, утончается не в оскорбительном смысле, а от знания, как эти два автора бросили вызов моим собственным навыкам.