Saya melihat persekitaran penggunaan kedua apabila tuan memperkenalkan ini, teks asal ada di sini:
http://www.ruanyifeng.com/blo...
Objek o di sini sepatutnya ini? Jika ya mengapa ini paling tidak kongruen?
function test(){
console.log(this.x);
}
var o = {};
o.x = 1;
o.m = test;
console.log(o.m());
console.log(o===this);
Keluaran ialah:
1
palsu
Ini===tetingkap dalam paparan global
Apabila console.log() dilaksanakan dalam persekitaran global, ini sudah tentu menghala ke tetingkap
ini menunjukkan kepada persekitaran pelaksanaan semasa fungsi
o.m() secara tersirat mengikat ini pada objek o
Dalam skop global, ini menunjukkan kepada objek global
Sila ingat bahawa terdapat satu lagi kaedah panggilan func.call(konteks, x, m). Kedua-dua kaedah di atas hanyalah gula sintaktik
bersamaan denganTetapi terdapat peraturan dalam penyemak imbas:
Jika konteks yang anda lalui adalah batal atau tidak ditentukan, maka objek tetingkap ialah konteks lalai (konteks lalai dalam mod ketat tidak ditentukan)Jadi perkara di atas sepatutnya sepadan dengan tetingkap.