Saya menggunakan ini semasa temu bual beberapa hari yang lalu Penemuduga mengatakan bahawa pemahaman saya agak salah. Saya kembali dan membaca beberapa buku dan beberapa blog, melakukan beberapa ujian, dan mendapati bahawa pemahaman saya memang salah. >
1. Pembolehubah globalmestilah yang paling biasa digunakan Ini dipanggil dalam fungsi, yang sebenarnya merupakan pembolehubah global
var value="0"; function mei(){ var value="1"; console.log(this.value); //0 console.log(value); //1 } mei();
global
2.PembinaIni adalah penggunaan yang saya lebih kenali Gunakan ini dalam pembina Selepas objek baharu, ini akan menunjuk ke objek baharu
var value="window"; function mei(){ this.value=1; this.show=function(){ console.log(this.value) } } var m=new mei(); console.log(m.value); //1 m.show(); //1
3.panggil dan mohon
Terus pinjam contoh daripada panggilan saya dan gunakan blog
var p="456"; function f1(){ this.p="123"; } function f2() { console.log(this.p); } f2(); //456 f2.call(f1()); //123 f2.apply(f1()); //123
4. Fungsi dipanggil sebagai kaedah objek (di mana saya tersilap)
Saya diminta untuk menulis objek dengan beberapa kaedah. Saya tiba-tiba menentukan pembolehubah global, dan kemudian menggunakan ini untuk memanggilnya dalam kaedah objek. Saya berkata ia harus tingkap, kerana saya jarang menggunakan kaedah ini, dan berfikir bahawa hanya baru atau panggilan akan mengubah arah ini , saya benar-benar salah
var value="father"; function mei(){} mei.value="child"; mei.get=function(){console.log(this.value)}; mei.show=function(){console.log(value)}; mei.get(); //child mei.show(); //father
Bagi bapa, saya memahaminya dengan cara ini Fungsi yang ditunjukkan oleh pertunjukan ditakrifkan dalam persekitaran global Disebabkan rantaian skop, nilainya tidak terdapat dalam pertunjukan, jadi saya mencarinya dalam persekitaran di mana ia ditakrifkan, dan kemudian saya mendapati nilai persekitaran global, jika terdapat sebarang salah faham di sini, saya harap seseorang dapat menunjukkannya.