"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Quando escolher Object.create em vez de new para herança de JavaScript?

Quando escolher Object.create em vez de new para herança de JavaScript?

Publicado em 19/11/2024
Navegar:110

When to Choose Object.create Over new for JavaScript Inheritance?

Herança JavaScript: Object.create vs. new

O conceito de herança em JavaScript pode ser confuso, pois existem várias abordagens para alcançar isto. Este artigo tem como objetivo esclarecer os métodos mais aceitos e fornecer uma solução para seu cenário específico.

Compreendendo Object.create e novo

Object.create é um método que cria um novo objeto herdando de um objeto existente. Isso é útil quando você deseja criar um objeto base e estendê-lo com propriedades e métodos adicionais. A sintaxe para Object.create é:

Object.create(prototype[, propertiesObject])

Por outro lado, a palavra-chave new é usada para criar uma nova instância de um objeto e invocar sua função construtora. A sintaxe para new é:

new ConstructorFunction([arguments])

Escolhendo o método correto para herança

A escolha entre Object.create e novo depende de seus requisitos específicos. Object.create é ideal para criar objetos base dos quais você deseja herdar sem invocar seus construtores. Por exemplo:

const Model = {
    // Base object properties and methods...
};

const RestModel = Object.create(Model);

Se, no entanto, você deseja chamar a função construtora do objeto base no objeto herdado, então você deve usar new. Por exemplo:

function Model() {
    // Base object constructor...
}

function RestModel() {
    Model.call(this);
    // Additional properties and methods...
}

Solução para seu cenário

No seu caso, você deseja herdar o RestModel do objeto base do modelo. Para conseguir isso usando Object.create, você faria o seguinte:

RestModel.prototype = Object.create(Model.prototype);

Isso criará um novo protótipo RestModel que herda do Protótipo de modelo.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3