f() dalam console.log(f()) dipanggil secara bebas 1 Jika fungsi pemanggil dimiliki oleh objek, maka apabila fungsi dipanggil, dalaman ini menghala ke objek. 2 Jika fungsi dipanggil secara bebas, maka ini di dalam fungsi menghala ke tidak ditentukan. Bacaan yang disyorkan http://www.jianshu.com/p/d647... Saya harap ia akan membantu anda
Pelaksanaan fungsi, ini dalam badan fungsi menunjuk kepada pemanggil fungsi
1. Dalam kod berikut, pemanggil fungsi getFoo ialah obj, jadi ini di dalam fungsi getFoo menghala ke objek obj
var f = obj.getFoo()
2. Fungsi getFoo mengembalikan fungsi tanpa nama dan menetapkannya kepada pembolehubah f, dan kemudian melaksanakan fungsi f Pada masa ini, pembolehubah f dipasang pada tetingkap, dan ini di dalam fungsi f juga menunjuk ke tetingkap
obj.getFoo()
返回一个方程,赋值给了 f 。f 通过
f()
被调用,没有明确的调用者,所以 this 就是window
.Kalau nak dapatkan "obj", boleh buat ni
Sebab, dalam
f()
实际运行的地方,this
是window
,由于没有通过call
或者bind
改变上下文,所以输出的就是window
.Anda boleh menggantikannya seperti berikut:
Di sini
self
就是指向window
了,所以return self.foo
就是return window.foo
,也就是'window'
.Malah, pemahaman yang paling mudah ialah obj.getFoo memberikan f, dan kemudian melihat di mana kaedah ini dijalankan.
f() dalam console.log(f()) dipanggil secara bebas
1 Jika fungsi pemanggil dimiliki oleh objek, maka apabila fungsi dipanggil, dalaman ini menghala ke objek.
2 Jika fungsi dipanggil secara bebas, maka ini di dalam fungsi menghala ke tidak ditentukan.
Bacaan yang disyorkan http://www.jianshu.com/p/d647... Saya harap ia akan membantu anda
Pelaksanaan fungsi, ini dalam badan fungsi menunjuk kepada pemanggil fungsi
1. Dalam kod berikut, pemanggil fungsi getFoo ialah obj, jadi ini di dalam fungsi getFoo menghala ke objek obj
2. Fungsi getFoo mengembalikan fungsi tanpa nama dan menetapkannya kepada pembolehubah f, dan kemudian melaksanakan fungsi f Pada masa ini, pembolehubah f dipasang pada tetingkap, dan ini di dalam fungsi f juga menunjuk ke tetingkap