DM
Size: a a a
DM
DM
strict mode, это такой режим, где все опасные для неопытных программистов возможности js отключены, вот заодно и отключили передачу глобального контекстаDM
this будет undefinedDM
undefined, а этот объект - а вот так, спека так велит )obj.func() то js слушается спеку и засовывает в this не undefined а этот самый obj, который идет перед точкойDM
this лежит undefined, а ты хочешь, чтоб не undefined, как?DM
call и applyDM
Function.prototype.call() или Function.prototype.apply()DM
DM
thisDM
foo(1, 2, 3) то this будет задан jsfoo.call('hello', 1, 2, 3) - в этом случае js примет первый аргумент за this и если в foo ты сделаешь console.log(this), то увидишь строку hello - которую ты и передалDM
DM
this назначить, а вызывать функцию пока не хочешь - например передать ее как обработчик какого-то события, которое пока еще не случилось - ну тут на выручку приходит bindDM
DM
call или apply и передаст ей все эти аргументыDM
const bar = foo.bind('hello', 1, 2, 3)return function() {
foo.call('hello', 1, 2, 3)
}DM
DM
w
DM
return function(...args) {
foo.call('hello', 1, 2, 3, ...args)
}DM
bar(4, 5), то на самом деле произойдет foo.call('hello', 1, 2, 3, 4, 5)