Memahami Perbezaan Antara proto dan constructor.prototype
Adalah penting untuk memahami perbezaan antara sifat __proto__ dan constructor.prototype apabila bekerja dengan objek JavaScript.
proto dan Rantaian Prototaip
Setiap objek JavaScript mempunyai sifat __proto__ dalaman yang merujuk objek prototaip daripada pembinanya. Objek prototaip ini mengandungi sifat dan kaedah yang dikongsi untuk objek jenisnya.
Demonstrasi
Pertimbangkan kod berikut:
<code class="js">function Gadget(name, color) { this.name = name; this.color = color; } Gadget.prototype.rating = 3; var newtoy = new Gadget("webcam", "black");</code>
Dalam ini contoh, __proto__ newtoy akan menunjuk ke Gadget.prototype, yang mempunyai sifat rating dengan nilai 3. Oleh itu, mengakses newtoy.__proto__.__proto__.__proto__ akan mengembalikan null kerana ia tidak mempunyai objek prototaip lagi.
constructor.prototype.constructor.prototype
Ungkapan kompleks ini tidak mengakses rantai prototaip secara langsung. Sebaliknya, ia cuba mengakses constructor.prototype of the constructor.prototype of the constructor.prototype of the Gadget constructor. Dalam kes ini, ia adalah pembina Alat itu sendiri. Oleh itu, ia terus menunjuk ke Gadget.prototype.
Menyemak Null dalam Internet Explorer
Internet Explorer tidak menyokong sifat __proto__. Untuk menyemak nol dalam kes ini, anda boleh menggunakan kaedah hasOwnProperty() untuk menentukan sama ada __proto__ wujud. Contohnya:
<code class="js">if (!(newtoy.hasOwnProperty("__proto__"))) { // `__proto__` is not supported }</code>
Perwakilan Visual
Untuk membantu dalam理解ing, berikut ialah peta visual rantai prototaip dan hubungan antara __proto__ dan constructor.prototype:
[Imej rantaian prototaip dan perhubungan __proto__/constructor.prototaip]
Rajah ringkas ini memberikan gambaran menyeluruh tentang kerja dalaman objek JavaScript, membantu menjelaskan perbezaan antara sifat ini dan peranannya dalam rantaian prototaip.
Atas ialah kandungan terperinci Apakah Perbezaan Antara proto dan constructor.prototype dalam Warisan JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!