'use strict'
class A {
constructor(){}
Do(){
alert(this)
}
}
let a = new A()
a.Do()
let b = a.Do
b()
Почему во втором вызове выводится undefined?
'use strict'
class A {
constructor(){}
Do(){
alert(this)
}
}
let a = new A()
a.Do()
let b = a.Do
b()
Почему во втором вызове выводится undefined?
Потому что используется "use strict"
При использовании "use strict" - this по умолчания - undefined
В первом вызове this - указывает на объект.
Но после получения ссылки на функцию и выполнения
let b = a.Do;
b();
Контекст меняется на глобальный объект, либо, при использовании "use strict" на undefined
Кроме того, в mdn
Тело определения класса, и
class expressionsвыполняются в strict mode.
thisзависит от того как именно вызвали функцию – Grundy Mar 21 '16 at 18:31