Perbezaan antara menggunakan baru dan tidak menggunakan objek instantiated dalam kemahiran javascript_javascript

WBOY
Lepaskan: 2016-05-16 15:53:43
asal
2167 orang telah melayarinya

Mari kita lihat contoh dahulu

function Me(name,age,job){
  this.name = name;
  this.age = age;
  this.job = job;
}

Salin selepas log masuk

Apakah perbezaan antara dua kaedah berikut untuk membuat seketika objek?

var mefun1 = new Me('fei','20','it');
var mefun2 = Me('fei','20','it');

Salin selepas log masuk

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 );

Salin selepas log masuk

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

Salin selepas log masuk

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.

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