Rumah >hujung hadapan web >tutorial js >Analisis mendalam tentang pembina dalam JavaScript

Analisis mendalam tentang pembina dalam JavaScript

PHPz
PHPzasal
2016-05-16 15:04:551824semak imbas

Harta pembina mengembalikan rujukan kepada fungsi tatasusunan yang mencipta objek ini. Artikel ini akan memperkenalkan anda kepada pembina dalam JavaScript Rakan yang memerlukannya boleh merujuknya.

Definisi dan Penggunaan

Harta pembina mengembalikan rujukan kepada fungsi tatasusunan yang mencipta objek ini.

Sintaks

object.constructor

constructor, constructor, kita semua biasa dengan nama ini, constructor sentiasa Pointer kepada pembina yang mencipta objek semasa.

Satu perkara yang perlu diperhatikan di sini ialah setiap fungsi mempunyai atribut prototaip, dan pembina prototaip ini menunjukkan fungsi ini Pada masa ini, apabila kami mengubah suai prototaip fungsi ini, kemalangan berlaku . Seperti

function Person(name,age){
this.name = name;
this.age = age;
}
Person.prototype.getAge = function(){
return this.age;
}
Person.prototype.getName = function(){
return this.name;
}
var p = new Person("Nicholas",18);
console.log(p.constructor); //Person(name, age)
console.log(p.getAge()); //18
console.log(p.getName()); //Nicholas

Tetapi jika ini berlaku:

function Person(name,age){
this.name = name;
this.age = age;
}
Person.prototype = {
getName:function(){
return this.name;
},
getAge:function(){
return this.age;
}
}
var p = new Person("Nicholas",18);
console.log(p.constructor); //Object()
console.log(p.getAge()); //18
console.log(p.getName()); //Nicholas

Akibatnya, pembina telah berubah .

Alasannya ialah prototaip itu sendiri juga merupakan objek Kod di atas adalah bersamaan dengan

Person.prototype = new Object({
getName:function(){
return this.name;
},
getAge:function(){
return this.age;
}
});

kerana pembina sentiasa menunjuk ke. pembina yang mencipta objek semasa, maka tidak sukar untuk memahami bahawa output p.constructor dalam kod di atas ialah Object.

Apakah yang perlu saya lakukan jika pembina selepas mengubah suai prototaip masih mahu ia menunjuk kepada Orang? Mudah, hanya tetapkan nilai kepada Person.prototype.constructor secara langsung:

Person.prototype = {
constructor:Person,
getName:function(){
return this.name;
},
getAge:function(){
return this.age;
}
}

Di atas ialah pembina dalam JavaScript yang diperkenalkan oleh editor Untuk lebih banyak tutorial berkaitan, sila lawati Tutorial video JavaScript!

Kenyataan:
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

Artikel berkaitan

Lihat lagi