Héritage JavaScript : Object.create vs. new
Le concept d'héritage en JavaScript peut prêter à confusion, car il existe différentes approches pour y parvenir. il. Cet article vise à clarifier les méthodes les plus acceptées et à fournir une solution pour votre scénario spécifique.
Comprendre Object.create et new
Object.create est une méthode qui crée un nouvel objet en héritant d'un objet existant. Ceci est utile lorsque vous souhaitez créer un objet de base, puis l'étendre avec des propriétés et des méthodes supplémentaires. La syntaxe de Object.create est :
Object.create(prototype[, propertiesObject])
D'autre part, le nouveau mot-clé est utilisé pour créer une nouvelle instance d'un objet et invoquer sa fonction constructeur. La syntaxe de new est :
new ConstructorFunction([arguments])
Choisir la bonne méthode d'héritage
Le choix entre Object.create et le nouveau dépend de vos besoins spécifiques. Object.create est idéal pour créer des objets de base dont vous souhaitez hériter sans appeler leurs constructeurs. Par exemple :
const Model = { // Base object properties and methods... }; const RestModel = Object.create(Model);
Si, toutefois, vous souhaitez appeler la fonction constructeur de l'objet de base sur l'objet héritant, vous devez utiliser new. Par exemple :
function Model() { // Base object constructor... } function RestModel() { Model.call(this); // Additional properties and methods... }
Solution pour votre scénario
Dans votre cas, vous souhaitez hériter du RestModel de l'objet de base du modèle. Pour y parvenir en utilisant Object.create, procédez comme suit :
RestModel.prototype = Object.create(Model.prototype);
Cela créera un nouveau prototype RestModel qui hérite du Modèle prototype.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3