{
  "id": 5484293,
  "title": "Protótipos: como a herança realmente funciona no JavaScript",
  "url": "https://urgent.news/2026/09/04/prototipos-como-a-heranca-realmente-funciona-no-javascript",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-09-04T03:43:44.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/rohyer/prototipos-como-a-heranca-realmente-funciona-no-javascript-4f9o"
  },
  "original_language": "pt",
  "account": "JavaScript é uma linguagem frequentemente descrita como orientada a protótipos, ao invés de orientada a objetos como o C# e Java. Isso significa que o modelo de herança em JavaScript é diferente das linguagens tradicionais orientadas a objetos, onde classes desempenham um papel central. Em vez disso, a herança ocorre por meio da propriedade [[Prototype]], que é uma referência a um objeto, chamado protótipo, e define as propriedades e métodos que um objeto pode herdar de outro objeto.\n\nPara entender isso melhor, considere um array em JavaScript. Quando um array é criado com [] ou new Array(), ele herda métodos como push, pop, map e filter de Array.prototype. Essa propriedade .prototype contém um objeto com propriedades e métodos que todos os arrays podem usar. Ao examinar o [[Prototype]] de Array.prototype, podemos ver que ele aponta para Object.prototype, que contém propriedades e métodos disponíveis para todos os objetos da cadeia de protótipo. O Object.prototype em si tem um [[Prototype]] igual a null, indicando o final dessa cadeia.\n\nUma parte importante desse modelo de protótipo é a propriedade .prototype, que é uma característica das funções construtoras. A função construtora é usada para criar objetos e, além de métodos herdados, pode ter propriedades e métodos estáticos declarados diretamente dentro dela. Esses métodos são acessíveis não apenas pelas instâncias, mas também pela própria função construtora.\n\nEntender o [[Prototype]] e .prototype é crucial para trabalhar com JavaScript de maneira eficiente. Por exemplo, ao invés de criar funções duplicadas para cada instância, podemos usar .prototype para compartilhar métodos entre todas as instâncias. Isso não só economiza memória, mas também mantém o código limpo e reutilizável. Além disso, ter em mente que __proto__ não é o modo recomendado para acessar ou definir o [[Prototype]] e que Object.getPrototypeOf() deve ser usado em seu lugar, ajuda a evitar potenciais problemas de segurança como a protótipo pollution.",
  "summary": "Introdução Muitas linguagens como C#, Java, entre outras são descritas como orientadas a objeto, possibilitando o paradigma Programação Orientada a Objeto (POO). No entanto, quando falamos de JS, sabemos que por mais que existam objetos, ela é dita como uma linguagem orientada a protótipos, mas o que de fato isso significa, qual problema isso resolve e como muda a maneira como programamos? O…",
  "key_points": [
    "JavaScript is often described as prototype-based, not class-based like C# and Java",
    "The .prototype property of constructor functions allows sharing methods among all instances"
  ],
  "editors_take": "Entender o modelo de herança baseado em protótipos em JavaScript é crucial para escrever código eficiente, reutilizável e seguro, explorando recursos como compartilhamento de métodos e evitando problemas como poluição de protótipo.",
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}