Articles of protótipo de

Método de chamada usando protótipo de JavaScript

É possível chamar o método base de um método protótipo em JavaScript se ele foi substituído? MyClass = function(name){ this.name = name; this.do = function() { //do somthing } }; MyClass.prototype.do = function() { if (this.name === ‘something’) { //do something new } else { //CALL BASE METHOD } };

prototype: escopo profundo de “this” para acessar o escopo da instância

Como o escopo mais superior pode ser armazenado em cache para ser usado mais profundamente no protótipo mais tarde, da seguinte forma: var Game = function(id){ this.id = id; }; Game.prototype = { board : { init: function(){ // obviously “this” isn’t the instance itself, but will be “board” console.log(this.id); } } } var game […]

Como acessar a class interna de assembly externo

Ter um assembly que não posso modificar (fornecido pelo fornecedor) que tenha um método retornando um tipo de object, mas na verdade é de um tipo interno. Como posso acessar os campos e / ou methods do object da minha assembly? Lembre-se de que não posso modificar o assembly fornecido pelo fornecedor. Em essência, aqui […]

Estendendo um Objeto em Javascript

Atualmente estou transformando de Java para Javascript, e é um pouco difícil para mim descobrir como estender objects da maneira que eu quero fazer. Já vi várias pessoas na internet usarem um método chamado extender em object. O código ficará assim: var Person = { name : ‘Blank’, age : 22 } var Robot = […]

Analisar a sequência JSON em um protótipo de object específico em JavaScript

Eu sei como analisar uma String JSON e transformá-lo em um object JavaScript. Você pode usar JSON.parse() em navegadores modernos (e IE9 +). Isso é ótimo, mas como posso pegar esse Objeto JavaScript e transformá-lo em um Objeto JavaScript específico (ou seja, com um determinado protótipo)? Por exemplo, suponha que você tenha: function Foo() { […]

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; } […]