javascript - Menunjukkan isu tentang ini
天蓬老师
天蓬老师 2017-06-28 09:25:33
0
5
802
var foo = "window";
var obj = {
    foo : "obj",
    getFoo : function(){
        return function(){
            return this.foo;
        };
    }
};
var f = obj.getFoo();
console.log(f());  //结果:window

Mengapa keputusan kod di atas berjalan tetingkap?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

membalas semua(5)
滿天的星座

obj.getFoo() 返回一个方程,赋值给了 f 。
f 通过 f() 被调用,没有明确的调用者,所以 this 就是 window .

Kalau nak dapatkan "obj", boleh buat ni

var foo = "window";
var obj = {
    foo : "obj",
    getFoo : function(){
        var self = this;
        return function(){
            return self.foo;
        };
    }
};

var f = obj.getFoo();
console.log(f());
阿神

Sebab, dalam f()实际运行的地方,thiswindow,由于没有通过call或者bind改变上下文,所以输出的就是window.

Anda boleh menggantikannya seperti berikut:

console.log(f());
// ----->
console.log(obj.getFoo());
// ----->
console.log(function() {
    var self = this;
    return function() {
        return self.foo
    }
});

Di siniself就是指向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 = function () {
    return function () {
        return this.foo
    }
}
曾经蜡笔没有小新

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

Ty80

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

console.log(f());  //结果:window
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan