Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Apakah itu pembina JavaScript
Dalam JavaScript, pembina ialah fungsi khas yang digunakan untuk memulakan objek yang baru dicipta selepas memorinya diperuntukkan Pembina objek digunakan untuk mencipta jenis objek khas Apabila objek itu mula-mula diperuntukkan. ia digunakan untuk memberikan nilai kepada sifat ahli dan kaedah dengan menerima parameter.
Persekitaran pengendalian tutorial ini: sistem Windows 10, versi JavaScript 1.8.5, komputer Dell G3.
Apakah itu pembina JavaScript
Dalam pengaturcaraan berorientasikan objek, pembina ialah pembina yang digunakan untuk mencipta objek baharu selepas memori objek yang baru dicipta diperuntukkan Fungsi khas yang memulakan objek ini. Dalam JavaScript semuanya adalah objek. Pembina objek digunakan untuk mencipta jenis objek khas Pertama, ia menyediakan objek untuk digunakan. Kedua, apabila objek pertama kali dibuat, ia menerima parameter untuk menetapkan nilai kepada sifat dan kaedah ahli.
Penciptaan Objek
Tiga cara asas untuk mencipta objek:
var newObject = {}; // or var newObject = Object.create( null ); // or var newObject = new Object();
Apabila pembina Objek mencipta pembungkus objek untuk nilai tertentu, atau apabila tiada nilai diluluskan, ia akan mencipta objek kosong dan mengembalikannya.
Empat cara untuk menetapkan pasangan nilai kunci kepada objek:
// ECMAScript 3 兼容形式 // 1. “点号”法 // 设置属性 newObject.someKey = "Hello World"; // 获取属性 var key = newObject.someKey; // 2. “方括号”法 // 设置属性 newObject["someKey"] = "Hello World"; // 获取属性 var key = newObject["someKey"]; // ECMAScript 5 仅兼容性形式 // For more information see: http://kangax.github.com/es5-compat-table/ // 3. Object.defineProperty方式 // 设置属性 Object.defineProperty( newObject, "someKey", { value: "for more control of the property's behavior", writable: true, enumerable: true, configurable: true }); // 如果上面的方式你感到难以阅读,可以简短的写成下面这样: var defineProp = function ( obj, key, value ){ var config = { value } Object.defineProperty( obj, key, config ); }; // 为了使用它,我们要创建一个“person”对象 var person = Object.create( null ); // 用属性构造对象 defineProp( person, "car", "Delorean" ); defineProp( person, "dateOfBirth", "1981" ); defineProp( person, "hasBeard", false ); // 还可以创建一个继承于Person的赛车司机 var driver = Object.create( person ); // 设置司机的属性 defineProp(driver, "topSpeed", "100mph"); // 获取继承的属性 (1981) console.log( driver.dateOfBirth ); // 获取我们设置的属性 (100mph) console.log( driver.topSpeed ); // 4. Object.defineProperties方式 // 设置属性 Object.defineProperties( newObject, { "someKey": { value: "Hello World", writable: true }, "anotherKey": { value: "Foo bar", writable: false } }); // 3和4中的读取属行可用1和2中的任意一种
Pembina asas
Seperti yang kita lihat sebelum ini Ya, JavaScript melakukannya tidak menyokong konsep kelas, tetapi ia mempunyai fungsi pembina yang berfungsi dengan objek. Menggunakan kata kunci baharu untuk memanggil fungsi ini, kami boleh memberitahu JavaScript untuk menggunakan fungsi ini sebagai pembina, yang boleh memulakan objek dengan ahli yang ditentukan sendiri.
Di dalam pembina ini, kata kunci ini merujuk kepada objek yang baru dibuat. Kembali kepada penciptaan objek, pembina asas kelihatan seperti ini:
function Car( model, year, miles ) { this.model = model; this.year = year; this.miles = miles; this.toString = function () { return this.model + " has done " + this.miles + " miles"; }; } // 使用: // 我们可以实例化一个Car var civic = new Car( "Honda Civic", 2009, 20000 ); var mondeo = new Car( "Ford Mondeo", 2010, 5000 ); // 打开浏览器控制台查看这些对象toString()方法的输出值 console.log( civic.toString() ); console.log( mondeo.toString() );
Di atas ialah versi ringkas corak pembina, tetapi ia mempunyai dua masalah:
Sukar untuk diwarisi
Dalam setiap objek yang dicipta oleh pembina Kereta, fungsi seperti toString() ditakrifkan semula
Situasi yang ideal ialah semua objek jenis Kereta harus merujuk Fungsi yang sama
menggunakan pembina "prototaip"
Dalam JavaScript, fungsi mempunyai atribut prototaip. Apabila kita memanggil pembina JavaScript untuk mencipta objek, sifat pada prototaip pembina boleh diakses dan dipanggil untuk objek yang dicipta
function Car( model, year, miles ) { this.model = model; this.year = year; this.miles = miles; } // 注意这里我们使用 Object.prototype.newMethod 而不是 Object.prototype ,以避免我们重新定义原型对象 Car.prototype.toString = function () { return this.model + " has done " + this.miles + " miles"; }; // 使用: var civic = new Car( "Honda Civic", 2009, 20000 ); var mondeo = new Car( "Ford Mondeo", 2010, 5000 ); console.log( civic.toString() ); console.log( mondeo.toString() );
Melalui kod di atas, satu contoh toString() Dikongsi oleh semua Objek kereta.
Cadangan berkaitan: Tutorial pembelajaran javascript
Atas ialah kandungan terperinci Apakah itu pembina JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!