Странный оператор JavaScript, что это значит?

#javascript

#javascript

Вопрос:

Я вижу этот код, что он делает?

 var obj = this;
  

Комментарии:

1. Какая часть этого вас смущает? это ?

2. нам нужно будет знать, в каком контексте (в рамках какой функции это было?)..

3. Я думаю, более интересным было бы: зачем вам это делать?

4. Ответ: Это оператор переменной с объявлением переменной, который инициализирует объявленную переменную obj значением this .

Ответ №1:

Это просто сохранение текущей ссылки на this объект, которая будет использоваться в будущем. Это полезно, потому что в JS значение this зависит от контекста.

Ответ №2:

Оно сохраняет ссылку на то, что this было в текущем контексте, чтобы его можно было использовать позже.

Комментарии:

1. Где «позже», вероятно, означает «при закрытии».

Ответ №3:

Это установка локальной копии текущей функции первого класса, в которой она устанавливается.

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

Допустим, у меня есть

 function Person() {
   this.name = "gnostus";
}
  

и мне нужно получить доступ к name изнутри селектора jquery, где это становится html-элементом, я бы сохранил свой объект в переменной copy и использовал, obj.name вместо this.name когда я внутри контекста jquery.

Комментарии:

1. Я почему-то подозреваю, что jQuery является контекстом этого вопроса.

Ответ №4:

Это зависит от того, где находится этот оператор. Оно присваивает переменной «obj» ссылку на текущий объект.

например, следующий код откроет окно предупреждения и покажет [Window object]. Это потому, что мы проверяем значение «this» в области тела (не внутри какого-либо обработчика событий objects и т.д.)

 <html>
    <head>
    </head>
    <body>

    <script type="text/javascript">

        alert(this);
    </script>   

    </body>
</html>
  

Ответ №5:

Оно создает переменную ‘obj’ и устанавливает ее в текущем контексте.

Так, например, если это на глобальном уровне this , это будет текущее окно DOM.

Ответ №6:

 var obj = this;
  

Указывает, присваивает obj родительскому объекту текущей области.

Впервые я прочитал этот пост пару месяцев назад, чтобы разобраться с ключевым словом ‘this’.

http://justin.harmonize.fm/index.php/2009/09/an-introduction-to-javascripts-this/

Ответ №7:

Ключевое слово this используется для обозначения владельца функции или переменной, в которой используется это ключевое слово. Для подробного понимания посетите http://www.quirksmode.org/js/this.html

Ответ №8:

Единственный контекст, который я могу придумать, где такой код имеет смысл, — это сделать текущий контекст (this) доступным внутри замыкания.

Итак, код будет выглядеть примерно так:

 var obj = this;
setTimeout(function() {
    obj.someMethod();
}, 1000);
  

Это вызвало бы метод «someMethod» для текущего контекстного объекта по прошествии 1 секунды.