JavaScript harus menjadi salah satu bahasa lintas platform paling populer sekarang. Saya telah bermain dengan beberapa hal menarik di ujung depan, tetapi saya menemukan bahwa saya tidak menguasai bahasa ini dengan baik. Saya sedikit ceroboh, jadi saya ingin memanfaatkan waktu saya punya waktu untuk menambahkan beberapa hal yang hilang.
Ikatan tersembunyi ini
Pada awalnya ini adalah sesuatu yang saya bingung, tetapi ketika saya pertama kali melihatnya, saya tidak mengerti. Kemudian, dalam situasi yang sama, masalah yang sama dapat diselesaikan dengan metode yang sama. Jadi saya mencoba memilah pengetahuan di dalamnya untuk pencarian yang mudah.
Ini adalah kesalahan desain bahasa JavaScript, tetapi tampaknya kesalahan ini tidak dapat dihindari, fungsi adalah objek, array adalah objek, dll. Kutipan contoh dari "JavaScript: The Good Parts"
Salinan kode adalah sebagai berikut:
fungsi add (a, b) {return a+b}
var sum = add (3,4);
console.log (sum); // sum = 7
Pada saat ini, hasil dari jumlahnya adalah 7.
Salinan kode adalah sebagai berikut:
> Typeof Add
> 'nomor'
Seperti yang dapat Anda lihat di sini, jenis ADD adalah nilai numerik.
Saat memanggil fungsi dalam mode ini, ini terikat pada variabel global.
Yaitu di lingkungan saat ini, kita dapat menyebutnya dengan cara ini
Salinan kode adalah sebagai berikut:
this.add (3,4)
Ini adalah ikatan implisit dari ini, dan ini akan terikat dengan cara yang berbeda.
Salinan kode adalah sebagai berikut:
var hello = function () {
kembalikan "halo," + this.name;
};
name = 'this';
console.log (hello ());
Lalu kita akan mendapatkan halo, ini. Dan kapan
Salinan kode adalah sebagai berikut:
var hello = function () {
kembalikan "halo," + this.name;
};
var user = {
Halo: Halo,
Nama: 'Phodal',
};
console.log (user.hello ());
Pada saat ini, Hello in User menunjuk ke fungsi Hello, dan dalam pemahaman kita, bagaimana ini mungkin? Jadi itu bug.
Jika kita mendefinisikan variabel dalam metode ini dan menetapkan nilai ini padanya, maka fungsi internal dapat mengaksesnya melalui variabel itu.
var itu = ini
Jadi ketika situasinya sedikit lebih rumit, kita perlu menggunakan:
Salinan kode adalah sebagai berikut:
PPN itu = ini;
Tips:
1. Lingkup variabel ini selalu ditentukan oleh fungsi tertutup terdekatnya.
2. Gunakan variabel lokal (seperti saya, diri, itu) untuk membuat ikatan ini tersedia secara internal.
Contoh sederhana:
Salinan kode adalah sebagai berikut:
var m = function () {
this.name = "m";
};
var mm = function () {
z = m baru ();
this.name = "mm";
z.printname = function () {
console.log (this.name);
};
return z.printname ();
};
var mm = mm baru;
Pada saat ini ini menunjuk pada fungsi M, yang merupakan MM itu sendiri. Jika kita menghapus ini dari M, maka yang dikembalikan tidak ditentukan. Jadi kami membuat alias untuk ruang lingkup saat ini, seperti itu atau diri, dll.:
Salinan kode adalah sebagai berikut:
var mm = function () {
z = m baru ();
this.name = "mm";
var self = ini;
z.printname = function () {
console.log (self.name);
};
return z.printname ();
};
Dengan cara ini Anda dapat mengembalikan mm. Selain itu, metode BIND dari fungsi callback dapat digunakan dalam ES5.
Salinan kode adalah sebagai berikut:
var mm = function () {
z = m baru ();
this.name = "mm";
z.printname = function () {
console.log (this.name);
} .bind (ini);
return z.printname ();
};
Bind dapat mengikat metode ke penerima.
lainnya
Halo lainnya, dunia
Saya menemukan cetak ('halo') ('dunia') secara kebetulan, dan kemudian dikeluarkan 'halo, dunia'.
Fungsi-fungsi tingkat tinggi yang disebut tampaknya sangat berguna. Jika Anda tertarik, Anda dapat memeriksa artikel berikutnya.