Rumah >hujung hadapan web >tutorial js >Analisis mendalam tentang pembina dalam JavaScript
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!