javascript - Soalan tentang konteks, iaitu, apa yang ditunjukkan?
某草草
某草草 2017-07-05 10:56:18
0
5
889

Pergi terus ke kod:

var test = {
  outer: function () {
    // 此时this指向test对象
    console.log(this);
    
    function inner() {
      // 此时this指向window
      console.log(this);
    }
    inner();
  }
}

Apakah sebab mengapa titik kod di atas ini berbeza?

Saya faham sangat sekarang, tolong beri saya jawapan!

某草草
某草草

membalas semua(5)
大家讲道理

Membuang fungsi peminjaman dan pembina, hanya tinggal dua jenis, satu fungsi biasa dan satu lagi kaedah objek.

Kaedah objek menghala ke objek, fungsi biasa menghala ke global

曾经蜡笔没有小新

Siapa yang memanggil fungsi ini, maka thistunjuk kepada siapa.

Penunjukan

this的指向只和你如何调用这个函数有关,比如你说第一个this指向test,这可不一定,有的是办法把这个this的指向改掉。只有当你运行test.outer()的时候,第一个this才会指向test hanya berkaitan dengan cara anda memanggil fungsi ini Sebagai contoh, jika anda mengatakan bahawa

pertama menunjuk kepada ujian, ini tidak semestinya benar 🎜. Hanya apabila anda menjalankan test.outer() 🎜 yang pertama akan menunjuk ke test. 🎜
Ty80

/a/11...

女神的闺蜜爱上我

Ini ialah masalah penutupan apabila objek diberikan atribut melalui literal objek, termasuk kaedah fungsi, kaedah fungsi ini mempunyai output konsol, dan kemudian fungsi diisytiharkan dalam fungsi ini, masalah penutupan terbentuk dalam keadaan biasa , ini menunjuk ke tetingkap Dalam keadaan istimewa, anda boleh menukar nilai ini. Anda boleh membaca artikel yang saya tulis tentang penutupan paket Anda akan mendapat cerapan tentang kesulitan telefon bimbit

巴扎黑

Malah, adalah salah untuk menjawab tanpa nama! Fungsi yang ditakrifkan di dalam fungsi dalam objek tidak boleh mendapatkan pembolehubah persekitaran peringkat atas secara langsung, apatah lagi di dalam ini Anda mesti menentukan pembolehubah untuknya, seperti var that=this, anda boleh mendapatkan bahagian atas-. tingkatkan objek ini;
var test = {

    outer: function () {
        // 此时this指向test对象
        var that=this
        console.log(this);

        function inner() {
            // 此时this指向window
            console.log(that);
        }
        inner();
    }
}
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan