Mari kita lihat contoh dahulu
function Me(name,age,job){ this.name = name; this.age = age; this.job = job; }
Apakah perbezaan antara dua kaedah berikut untuk membuat seketika objek?
var mefun1 = new Me('fei','20','it'); var mefun2 = Me('fei','20','it');
Ringkasnya
Yang pertama ialah fungsi pembina, iaitu memanggil Fungsi pembina melalui operator baharu untuk mencipta fungsi
Kaedah kedua bukan instantiasi, tetapi hanya memanggil fungsi dan memberikan nilai pulangan kepada pembolehubah.
Kembangkan lagi
Tiada kelas sebenar dalam JavaScript, tetapi terdapat pembina dan pengendali baharu dalam JavaScript. Pembina digunakan untuk memulakan sifat dan nilai objek contoh. Mana-mana fungsi JavaScript boleh digunakan sebagai pembina, dan pembina mesti diawali dengan operator baharu untuk mencipta contoh baharu.
Pengendali baharu menukar konteks pelaksanaan fungsi dan juga mengubah tingkah laku pernyataan pulangan. Malah, menggunakan baharu dan pembina sangat serupa dengan bahasa tradisional yang melaksanakan kelas:
// 实例化一个Me var alice = new Me('alice', 18, 'Coder'); // 检查这个实例 assert( alice instanceof Me );
Penamaan pembina biasanya menggunakan penamaan kes unta, dengan huruf pertama dengan huruf besar, untuk membezakannya daripada fungsi biasa. Ini adalah
Penggunaan idiomatik.
// 不要这么做! Me('alice', 18, 'Coder'); //=> undefined
Fungsi ini hanya akan kembali tidak ditentukan, dan konteks pelaksanaan ialah objek tetingkap (global), dan tiga nama pembolehubah global, umur dan pekerjaan dibuat secara tidak sengaja. Jangan kehilangan kata kunci baharu apabila memanggil pembina.
Apabila pembina dipanggil menggunakan kata kunci baharu, konteks pelaksanaan berubah daripada objek global (tetingkap) kepada konteks kosong, yang mewakili tika yang baru dijana. Oleh itu, kata kunci ini menunjukkan contoh yang sedang dibuat. Walaupun ia agak mengelirukan untuk difahami, perkara yang sama berlaku untuk pelaksanaan mekanisme kelas terbina dalam dalam bahasa lain.
Secara lalai, jika pembina anda tidak mengembalikan apa-apa, ia akan mengembalikan ini - konteks semasa.
Jika tidak, kembalikan sebarang nilai jenis bukan primitif.
Di atas adalah keseluruhan kandungan artikel ini, saya harap anda semua menyukainya.