Please enable JavaScript.
Coggle requires JavaScript to display documents.
контекст (this), Strict mode - Coggle Diagram
контекст (this)
-
-
-
Особенности this в стрелочных функциях - нет собственного контекста this
Вместо этого this берется из окружения, в котором стрелочная функция была объявлена (лексический контекст)
const person = { name: "Alice", sayHello: function() { const arrowFunc = () => { console.log(this.name); // this.name — это "Alice" }; arrowFunc(); } }; person.sayHello(); // "Alice", this берется из функции sayHello, где this равно person
.call()
Метод call позволяет вызвать функцию немедленно, передав ей конкретный объект в качестве this
function introduce(greeting, punctuation) { console.log(${greeting}, my name is ${this.name}${punctuation}
); } const person = { name: "Alice" }; // Вызов функции introduce с контекстом person introduce.call(person, "Hello", "!"); // "Hello, my name is Alice!"
.apply()
Метод apply работает так же, как и call, но позволяет передавать аргументы в виде массива.
function introduce(greeting, punctuation) { console.log(${greeting}, my name is ${this.name}${punctuation}
); } const person = { name: "Alice" }; const args = ["Hello", "!"]; // Вызов функции introduce с контекстом person и массивом аргументов args introduce.apply(person, args); // "Hello, my name is Alice!"
.bind()
Метод bind также позволяет задавать значение this для функции, но не вызывает функцию сразу. Вместо этого он возвращает новую функцию, которую можно вызвать позже, с привязанным значением this.
function introduce(greeting, punctuation) { console.log(${greeting}, my name is ${this.name}${punctuation}
); } const person = { name: "Alice" }; // Создаем новую функцию с заранее привязанным контекстом person const boundIntroduce = introduce.bind(person, "Hello", "!"); // Вызовим boundIntroduce позже boundIntroduce(); // "Hello, my name is Alice!"
Указывает на объект, к которому "привязана" функция при вызове.
Проще говоря, this — это ссылка на текущий объект, в котором выполняется функция.
Strict mode
Зачем нужен
В строгом режиме нельзя использовать переменную, не объявив её с помощью let, const или var.
В строгом режиме нельзя создавать функции с одинаковыми именами параметров или объекты с дублирующимися ключами
Некоторые слова в JavaScript, такие как implements, interface, package, зарезервированы для будущего использования. Строгий режим предотвращает их использование в качестве имен переменных и функций.
В строгом режиме this внутри функции, вызванной в глобальном контексте, будет undefined, а не window
Режим, который активирует более строгие правила написания и выполнения кода
-
-