Maison > interface Web > js tutoriel > Object.create : une meilleure façon d'instancier des objets que « nouveau » ?

Object.create : une meilleure façon d'instancier des objets que « nouveau » ?

Linda Hamilton
Libérer: 2024-11-16 20:02:03
original
975 Les gens l'ont consulté

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

Object.create : une nouvelle façon d'instancier des objets

Javascript 1.9.3 / ECMAScript 5 a introduit Object.create, une méthode fortement préconisée par Douglas Crockford et d'autres. Cette méthode offre une alternative au mot-clé new traditionnel lors de l'instanciation d'objets.

Pour remplacer new par Object.create, examinons le code suivant :

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();
Copier après la connexion

En supposant que MY_GLOBAL.nextId existe, nous peut instancier UserA à l'aide de Object.create comme suit :

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
    }
});
Copier après la connexion

Avantages de Object.create

L'un des avantages d'Object.create par rapport à new est qu'il permet l'héritage différentiel. Les objets peuvent directement hériter des propriétés d'autres objets sans avoir besoin d'une chaîne de prototypes. Cela se fait en passant un objet comme deuxième argument à Object.create, où vous pouvez définir les propriétés héritées.

Un autre avantage est sa flexibilité. Object.create vous permet de définir des attributs de propriété (énumérables, inscriptibles, configurables) à l'aide de la syntaxe des descripteurs de propriétés, vous offrant ainsi un meilleur contrôle sur le comportement des propriétés des objets.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal