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

Linda Hamilton
Lepaskan: 2024-11-16 20:02:03
asal
900 orang telah melayarinya

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

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

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan