Rumah  >  Artikel  >  hujung hadapan web  >  Sedikit pengetahuan tentang kata kunci ini dalam kemahiran Javascript_javascript

Sedikit pengetahuan tentang kata kunci ini dalam kemahiran Javascript_javascript

WBOY
WBOYasal
2016-05-16 16:09:261303semak imbas

Javascript sepatutnya menjadi salah satu bahasa merentas platform yang paling popular sekarang Saya telah bermain dengan beberapa perkara menarik di bahagian hadapan, tetapi saya mendapati bahawa saya tidak menguasai bahasa ini dengan baik. Agak membuang masa, jadi saya ingin memanfaatkan masa lapang sekarang untuk menambah beberapa perkara yang hilang.

Ikatan tersirat ini

Ini adalah sesuatu yang mengelirukan saya pada mulanya Apabila saya mula-mula melihatnya, saya tidak memahaminya. Kemudian, dalam situasi yang sama, kaedah yang serupa boleh digunakan untuk menyelesaikan masalah yang sama. Jadi saya cuba menyusun ilmu dan memudahkan pencarian.

Ini adalah ralat reka bentuk dalam bahasa Javascript, tetapi nampaknya ralat ini tidak dapat dielakkan. Fungsi ialah objek, tatasusunan adalah objek, dsb. Memetik contoh daripada "Javascript: The Good Parts"

Salin kod Kod adalah seperti berikut:

fungsi tambah (a,b) {kembali b}
var sum = tambah (3,4);
console.log(jumlah); //jumlah = 7

Hasil jumlah pada masa ini ialah 7.

Salin kod Kod adalah seperti berikut:

> jenis tambah
> 'nombor'

Seperti yang anda lihat di sini, jenis tambah adalah angka.

Apabila memanggil fungsi dalam mod ini, ini terikat kepada pembolehubah global.
Iaitu, dalam persekitaran semasa, kita boleh memanggil ini
seperti ini

Salin kod Kod adalah seperti berikut:

this.add(3,4)

Ini adalah pengikatan tersirat ini, dan ini akan diikat dengan cara yang berbeza.
Salin kod Kod adalah seperti berikut:

var hello = fungsi (){
Kembalikan "Hello, " this.name;
};
nama = 'ini';
console.log(hello());

Pada masa ini kita akan mendapat Hello, ini. Dan apabila
Salin kod Kod adalah seperti berikut:

var hello = fungsi (){
Kembalikan "Hello, " this.name;
};
pengguna var = {
Hello : hello,
Nama: 'phodal',

};
console.log(user.hello());


Pada masa ini, hello dalam pengguna menunjuk kepada fungsi hello Pada pemahaman kami, bagaimana ini mungkin, jadi ia adalah pepijat.

Jika kita mentakrifkan pembolehubah dalam kaedah ini dan memberikannya nilai ini, maka fungsi dalaman boleh mengakses ini melalui pembolehubah itu.

var that = this

Jadi apabila keadaan menjadi lebih rumit, kita perlu menggunakan:

Salin kod Kod adalah seperti berikut:

tong itu = ini;

petua:

1.Skop pembolehubah ini sentiasa ditentukan oleh fungsi lampiran terdekatnya.
2. Gunakan pembolehubah tempatan (seperti saya, diri, itu) untuk menjadikan pengikatan ini tersedia secara dalaman.

Contoh mudah:

Salin kod Kod adalah seperti berikut:

var M = function(){
This.name = "M";
};

var MM = function(){
z = M baharu();
This.name = "MM";

z.printName = function(){
console.log(nama.ini);
};
Kembalikan z.printName();
};

var mm = MM baharu;


Pada masa ini, ini menunjuk kepada fungsi M, bukan MM itu sendiri. Jika kita mengalih keluar ini dalam M, maka nilai yang dikembalikan tidak ditentukan. Jadi kami mencipta alias bagi skop ini semasa, seperti itu atau diri, dsb.:
Salin kod Kod adalah seperti berikut:

var MM = function(){
z = M baharu();
This.name = "MM";
var diri = ini;
z.printName = function(){
          console.log(self.name);
};
Kembalikan z.printName();
};

Ini akan mengembalikan MM. Di samping itu, dalam ES5 anda boleh menggunakan kaedah ikatan fungsi panggil balik.

Salin kod Kod adalah seperti berikut:

var MM = function(){
z = M baharu();
This.name = "MM";
z.printName = function(){
console.log(nama.ini);
}.bind(this);
Kembalikan z.printName();
};

bind boleh mengikat kaedah kepada penerima.

Lain-lain

Helo lagi, dunia

Saya menemui cetakan('Hello')('World') secara kebetulan, dan kemudian mengeluarkan 'Hello, World'.

Apa yang dipanggil fungsi pesanan lebih tinggi nampaknya sangat berguna Jika anda berminat, anda boleh membaca artikel seterusnya.

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn