Javascript 1.9.3 / ECMAScript 5 memperkenalkan Object.create, kaedah yang sangat dianjurkan oleh Douglas Crockford dan lain-lain. Kaedah ini menyediakan alternatif kepada kata kunci baharu tradisional apabila menginstant objek.
Untuk menggantikan baharu dengan Object.create, mari kita periksa kod berikut:
var UserA = function(nameParam) { this.id = MY_GLOBAL.nextId(); this.name = nameParam; } UserA.prototype.sayHello = function() { console.log('Hello '+ this.name); } var bob = new UserA('bob'); bob.sayHello();
Dengan mengandaikan MY_GLOBAL.nextId wujud, kami boleh instantiate UserA menggunakan Object.create as berikut:
var userB = { sayHello: function() { console.log('Hello '+ this.name); } }; var bob = Object.create(userB, { 'id' : { value: MY_GLOBAL.nextId(), enumerable: true }, 'name': { value: 'Bob', enumerable: true } });
Satu kelebihan Object.create berbanding baharu ialah ia membenarkan pewarisan perbezaan. Objek boleh terus mewarisi sifat daripada objek lain tanpa memerlukan rantai prototaip. Ini dilakukan dengan menghantar objek sebagai hujah kedua kepada Object.create, di mana anda boleh menentukan sifat yang diwarisi.
Kelebihan lain ialah fleksibilitinya. Object.create membolehkan anda menetapkan atribut sifat (boleh dikira, boleh ditulis, boleh dikonfigurasikan) menggunakan sintaks deskriptor sifat, memberikan anda kawalan yang lebih besar ke atas kelakuan sifat objek.
Atas ialah kandungan terperinci Object.create: Cara yang Lebih Baik untuk Menginstant Objek Daripada `baru`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!