Analisis mendalam tentang pembina dalam JavaScript

PHPz
Lepaskan: 2018-09-28 14:01:05
asal
1804 orang telah melayarinya

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
Salin selepas log masuk

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
Salin selepas log masuk

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;
}
});
Salin selepas log masuk

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;
}
}
Salin selepas log masuk

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

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