Rumah >hujung hadapan web >tutorial js >Object.create: Cara yang Lebih Baik untuk Menginstant Objek Daripada `baru`?

Object.create: Cara yang Lebih Baik untuk Menginstant Objek Daripada `baru`?

Linda Hamilton
Linda Hamiltonasal
2024-11-16 20:02:03962semak imbas

Object.create: A Better Way to Instantiate Objects Than `new`?

Object.create: Cara Baharu untuk Mengonfigurasi Objek

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
    }
});

Kelebihan Object.create

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!

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