Ключевое слово this в JavaScript может оказаться довольно сложным, если его не понять. Это одна из тех вещей, которые трудно понять даже опытным разработчикам, но как только вы это сделаете, это сэкономит вам много времени.
В этой статье мы увидим, что это такое, как оно работает в различных ситуациях и какие распространенные ошибки не следует допускать при его использовании.
это просто относится к объекту, который в данный момент используется в коде JavaScript. Но вот в чем сложность: то, что это означает, также может меняться в зависимости от того, где и как вы используете это в своем коде. можно спросить: «Почему?» Ну, это динамическое по своей природе =, то есть его значение определяется при вызове функции, а не при ее написании.
Когда вы используете это в глобальном контексте, оно часто относится к глобальному объекту, что вполне логично, не так ли? Итак, если вы просто наберете это в консоли браузера, оно укажет на окно.
А при использовании внутри функции он ведет себя совершенно по-другому. Например: если вы вызываете, например, функцию «myFunction», это все равно будет указывать на глобальный объект, но если вы используете строгий режим в Javascript, он сделает его неопределенным внутри этой функции.
Да, я знаю, это довольно запутанно, просто продолжайте. Я объясню лучше.
Когда вы используете this внутри метода (функции, которая является свойством объекта), this относится к объекту, которому принадлежит метод.
Пример:
const myObject = { name: 'Alice', greet: function() { console.log(this.name); } }; myObject.greet(); // Output: 'Alice'
Здесь this.name относится к myObject.name, то есть «Алиса».
Конструкторы: когда вы создаете объект с помощью функции-конструктора или класса, это относится к создаваемому новому объекту.
Пример:
function Person(name) { this.name = name; } const person1 = new Person('Bob'); console.log(person1.name); // Output: 'Bob'
В коде this.name ссылается на свойство name нового объекта Person.
Одна из распространенных ошибок — потеря правильного значения в обратных вызовах или обработчиках событий. Например, если вы передаете метод из объекта в качестве обратного вызова, он может больше не ссылаться на объект.
Решение. Чтобы избежать этого, вы можете использовать функцию стрелки или привязку, чтобы она указывала на правильный объект.
const myObject = { name: 'Eve', greet: function() { setTimeout(() => { console.log(this.name); }, 1000); } }; myObject.greet(); // Output: 'Eve'
Это ключевое слово может быть занозой в заднице, но все, что вам нужно принять во внимание, это то, что оно меняется в зависимости от того, как и где вы решите его вызывать. Чтобы стать лучше, используйте его для практики на множестве примеров, и, не тратя времени, вы станете в нем профессионалом.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3