Descriptografando funções de seta: novo O que acontece com uma função de seta?

Arrow Functions é um recurso poderoso introduzido no ES6 que simplifica a maneira como as funções são escritas e melhora a vinculação de escopo. No entanto, as funções de seta têm algumas diferenças importantes em relação às expressões de função tradicionais, uma das quais é que não são adequadas para uso como construtores. newNeste artigo, vamos nos aprofundar nesse assunto e entender o que acontece ao usar arrow function .

Introdução às funções de seta

Primeiro, vamos revisar a sintaxe básica das funções de seta:

// 代码
const add = (a, b) => a + b;

As funções de seta são frequentemente usadas para criar funções anônimas e vinculá-las automaticamente ao contexto externo. Isso torna as funções de seta muito úteis ao trabalhar com funções de retorno de chamada e simplificar código.

Por que você não deveria usar newuma função de seta?

Em JavaScript, podemos usar newoperadores para criar instâncias de objetos. Normalmente, usamos construtores para conseguir isso, por exemplo:

// 代码
function Person(name) {
  this.name = name;
}

const person = new Person('Alice');

No entanto, as funções de seta não possuem suas próprias thisligações; elas capturam o contexto em que são criadas this. É por isso que eles não podem ser usados ​​como construtores como funções normais.

A tentativa de usar newuma função de seta resulta em um erro:

// 代码
const Example = () => {
  this.value = 42;
};

const instância = new Exemplo(); // TypeError: Exemplo não é um construtor

No exemplo acima, tentamos newcriar uma Exampleinstância de a usando a palavra-chave, mas como Exampleé uma função de seta, ela não possui recursos de construtor, então lança TypeError.

exemplo de código

Para entender melhor isso, podemos ver um exemplo prático. Digamos que temos uma função de seta para criar um objeto simples:

// 代码
const createPerson = (name) => ({
  name,
});

const person = createPerson('Bob');
console.log(person); // { name: 'Bob' }

A função createPerson acima retorna um objeto literal que contém um atributo name. Esta função funciona bem com funções de seta porque não requer essa ligação.

Resumir

Em JavaScript, as funções de seta são muito poderosas e úteis, mas não são adequadas para uso como construtores. Portanto, tente evitar o uso de new para instanciar funções de seta para evitar causar erros. Se você precisar criar objetos instanciáveis, ainda deverá usar construtores ou classes tradicionais. As funções de seta são projetadas para simplificar a escrita de expressões de função, não para instanciação de objetos.

Acho que você gosta

Origin blog.csdn.net/JaneLittle/article/details/132451263
Recomendado
Clasificación