Sedikit pengetahuan tentang kata kunci ini dalam kemahiran Javascript_javascript

WBOY
Lepaskan: 2016-05-16 16:09:26
asal
1299 orang telah melayarinya

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.

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!