Prototipe dan penutupan adalah yang paling umum, paling sulit dipahami, dan paling mudah dianggap sebagai dua bagian dari masalah dalam JavaScript. Tentu saja, mereka juga memiliki ekstensi, seperti rantai lingkup, warisan, dll. Baru -baru ini, saya juga telah membacanya dengan berbagai cara, membalikkan semuanya, dan merekam pengalaman saya sendiri. Menulis akan selalu membuat pemahaman saya lebih dalam. (Ini tidak ada hubungannya dengan judulnya, jadi saya menghela nafas. Setiap kali saya merasa bahwa saya mengerti, saya masih mendapatkan banyak hadiah setelah membacanya)
Mari kita bicara tentang kata kunci baru di JavaScript. Biasanya, kami menggunakannya untuk membuat objek instance dari suatu kelas. Dalam JavaScript, setelah instantiasi objek, kami mewarisi atribut dan metode kelas. Mari kita tunjukkan melalui kode
function person (name) {this.name = name;} person.age = "23"; person.prototype.say = function () {console.log ("I'm" + this.name);}; var person = orang baru ("wang fang"); console.log (person.name, // wang fang person.height // tidak ditentukan); orang.say (); // I'm wang fang console.log (person.name, // orang orang.age // 23); person.say (); //Person.say bukan fungsiMari kita lihat baris ini
var orang = orang baru ("wang fang");
Apa yang dilakukan baru? Berikut ini adalah apa pekerjaan mesin JS
var obj = {}; obj .__ proto__ = person.prototype; var result = person.call (obj, "wang fang"); return typeof hasil === 'obj'? Hasil: OBJ;1. Buat objek baru terlebih dahulu
2. Titik Obj's __proto__ ke prototipe objek prototipe orang, dan kemudian rantai prototipe objek OBJ ditetapkan: obj-> person.prototype-> object.prototype-> null
3. Panggil fungsi orang di ruang eksekusi objek OBJ dan lewati parameter "Wang Fang". Itu setara dengan var hasil = obj.person ("wang fang"). Setelah kalimat ini dieksekusi, OBJ menghasilkan nama atribut dan menugaskannya ke "Wang Fang".
4. Tentukan nilai pengembalian. Jika tidak ada nilai pengembalian atau nilai non-objek dikembalikan, pengembalian OBJ. Kalau tidak, nilai pengembalian dikembalikan sebagai objek baru (sedikit twist, operator ternary, silakan periksa sendiri)
Meringkaskan:
Fungsi utama dari kata kunci baru JavaScript adalah warisan, seperti yang disebutkan dalam contoh di atas, tetapi ingat bahwa orang adalah fungsi, sementara orang adalah objek. Adapun perbedaan antara fungsi dan objek, saya akan menulisnya lagi jika saya punya waktu.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.