Как раз в то самое время, когда я думаю, что наконец понимаю объем JavaScript

Я думаю, что вам нужно Dock Side из трех точек на боковой стороне консоли и ... нужно вручную расположить его в нужном месте

5
задан morgancodes 16 March 2009 в 22:22
поделиться

5 ответов

В JavaScript, this представляет объект контекста, на котором функция была вызвана, не объем, в котором это было определено (или объем, в котором это назвали). Для MyFunc, это ссылается на новый создаваемый объект; но для innerFunc, это ссылается на глобальный объект, так как никакой контекст не указан когда innerFunc назван.

Это имеет тенденцию сбивать с толку используемых к Java или подобным языкам OO, где this почти всегда ссылается на экземпляр класса, на котором определяется называемый метод. Просто помните: JavaScript не имеет методов. Или классы. Просто объекты и функции.

См. также: Каково объяснение для поведения 'этого' ключевого слова в JavaScript?

18
ответ дан 18 December 2019 в 07:32
поделиться

Просто сделайте следующее:

var MyFunc = function(){
    var self = this;
    alert(self);
    var innerFunc = function(){
        alert(self);
    }
    innerFunc();
};

new MyFunc();

Этот путь сам будет всегда означать это, независимо от того, откуда Вы называете его, который обычно является, что Вы хотите.

2
ответ дан 18 December 2019 в 07:32
поделиться

Как заметка на полях, "это" не обязательно ссылается на фактическую функцию все время, так как можно вызвать функцию с "принудительным" это - ссылка, думайте об обработчике событий, в котором это обратится к фактическому элементу, который запустил событие.

использование

yourFunction.apply(thisReference, arguments)

можно вызвать его, где "это" укажет на то, что Вы передаете как первый аргумент.

1
ответ дан 18 December 2019 в 07:32
поделиться

На первый взгляд я сказал бы, что это - потому что внешнее, которое 'это' в отношении MyFunc и внутреннего, которое 'это' в отношении innerFunc.

Однако JavaScript не что-то, в чем у меня есть какие-то конкретные экспертные знания.

-1
ответ дан 18 December 2019 в 07:32
поделиться

Для подробного объяснения закрытий, посещения:

http://www.brockman.se/writing/method-references.html.utf8

Г-н Brockman иллюстрирует ясно проблему, которую Вы имеете. Я прочитал эту статью время от времени просто для чистого удовольствия способности сказать, "Ага!Я понимаю!"

Для еще более интересных уроков JavaScript посетите "Wrrrld Douglas Crockford Широкая сеть" в

http://www.crockford.com/

Как создатель JSON, г-н Crockford является "Человеком" когда дело доходит до JavaScript. Он не знает меня, но он воспитал мое понимание красоты JavaScript, нет, программирования в целом.

Вы - это близко к становлению намного лучшим программистом, чем Вы теперь. Я говорю, утончается не в оскорбительном смысле, а от знания, как эти два автора бросили вызов моим собственным навыкам.

1
ответ дан 18 December 2019 в 07:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: