Articles of protótipo de

JavaScript: Quais são os perigos em estender o Array.prototype?

O Google JavaScript Style Guide recomenda contra a extensão do Array.prototype . No entanto, usei Array.prototype.filter = Array.prototype.filter || function(…) {…} Array.prototype.filter = Array.prototype.filter || function(…) {…} como uma maneira de tê-lo (e methods similares) em navegadores onde eles não existem. MDN na verdade fornece exemplo semelhante . Estou ciente dos problemas do Object.prototype , […]

Atribuindo methods protótipos * dentro * da function construtora – por que não?

Estilisticamente, eu prefiro essa estrutura: var Filter = function( category, value ){ this.category = category; this.value = value; // product is a JSON object Filter.prototype.checkProduct = function( product ){ // run some checks return is_match; } }; Para esta estrutura: var Filter = function( category, value ){ this.category = category; this.value = value; };// var […]

Por que está mudando o ] de um object ruim para desempenho?

Dos documentos do MDN para a function setPrototypeOf padrão , bem como da propriedade __proto__ não padrão: Mutar o [[Prototype]] de um object, não importa como isso é feito, é altamente desencorajado, porque é muito lento e inevitavelmente atrasa a execução subseqüente em implementações modernas de JavaScript. Usar o Function.prototype para adicionar propriedades é a […]

Definir methods via protótipo vs usando isso no construtor – realmente uma diferença de desempenho?

Em JavaScript, temos duas maneiras de criar uma “class” e dar a ela funções públicas. Método 1: function MyClass() { var privateInstanceVariable = ‘foo’; this.myFunc = function() { alert(privateInstanceVariable ); } } Método 2: function MyClass() { } MyClass.prototype.myFunc = function() { alert(“I can’t use private instance variables. :(“); } Eu já li várias vezes […]

Entendendo a diferença entre Object.create () e new SomeFunction ()

Eu recentemente deparei com o método Object.create() em JavaScript, e estou tentando deduzir como é diferente de criar uma nova instância de um object com o new SomeFunction() , e quando você gostaria de usar um sobre o outro. Considere o seguinte exemplo: var test = { val: 1, func: function() { return this.val; } […]

Membros de object Javascript que são prototipados como matrizes se tornam compartilhados por todas as instâncias de class

Alguém já notou esse comportamento antes? Isso realmente me jogou fora … Eu teria esperado que as matrizes prototipadas fossem privadas para cada instância de class em vez de serem compartilhadas entre todas as instâncias de class. Alguém pode verificar se esse é o comportamento correto e talvez explicar esse comportamento com mais detalhes? Observe […]

Por que os protótipos de funções do Perl 5 são ruins?

Em outra pergunta do Stack Overflow, Leon Timmermans afirmou: Eu aconselho você a não usar protótipos. Eles têm seus usos, mas não para a maioria dos casos e definitivamente não estão neste. Por que isso pode ser verdade (ou não)? Eu quase sempre forneço protótipos para minhas funções Perl, e nunca antes vi alguém dizer […]

__proto__ VS. protótipo em JavaScript

Esta figura mostra novamente que cada object tem um protótipo. A function construtora Foo também possui seu próprio __proto__ que é Function.prototype, e que, por sua vez, também faz referência por meio de sua propriedade __proto__ novamente ao Object.prototype. Assim, repita, Foo.prototype é apenas uma propriedade explícita de Foo que se refere ao protótipo de […]

Qual é o motivo para usar a palavra-chave ‘new’ em Derived.prototype = new Base

O que faz o seguinte código: WeatherWidget.prototype = new Widget; onde Widget é um construtor, e eu quero estender o Widget ‘class’ com uma nova function WeatherWidget . Qual é a new palavra-chave lá e o que aconteceria se fosse deixada de fora?

Herança prototípica – escrevendo

Então eu tenho esses 2 exemplos, de javascript.info: Exemplo 1: var animal = { eat: function() { alert( “I’m full” ) this.full = true } } var rabbit = { jump: function() { /* something */ } } rabbit.__proto__ = animal rabbit.eat() Exemplo 2: function Hamster() { } Hamster.prototype = { food: [], found: function(something) […]