Articles of prototypal inheritance

Javascript – comment initialiser la classe super si le constructeur super classe prend des arguments

Considérez l'extrait Javascript suivant, var SuperClass = function(x){ this.x = x; this.a = 5; }; var SubClass = function(x){ } function IntermediateClass(){}; IntermediateClass.prototype = SuperClass.prototype; SubClass.prototype = new IntermediateClass; SubClass.prototype.constructor = SubClass; Maintenant, si je crée une instance de SubClass, l'objet n'initialise pas la propriété "a" et "x". var object = new SubClass; //object.a == […]

Comment Chrome et Firefox impriment-ils le nom de classe de l'objet dans la console?

Si je crée une classe Foo en utilisant des classes Javascript "traditionnelles", Chrome et Firefox afficheront le nom Foo lors de l'impression des instances Foo sur la console: function Foo(){ this.x = 10; } console.log(new Foo()); // Foo {x: 10} D'autre part, si j'utilise l'héritage prototypique à la main, alors je n'obtiens pas le nom […]

Dans Backbone.js, comment puis-je obtenir les valeurs par défaut des superclasses de modèle pour agir comme valeurs par défaut pour les sous-classes?

J'ai une classe qui définit certains paramètres par défaut, et une sous-classe qui définit certains paramètres par défaut. Mais lorsque je crée une instance de la sous-classe, il ne regarde que les valeurs par défaut locales et ne fusionne pas ses valeurs par défaut avec celles du parent. Existe-t-il un moyen simple de le faire […]

Quelle est la différence entre cette fonction et le prototype.function?

Compte tenu de l'héritage JS simple, quelle est la différence pratique dans la fonction de base entre ces deux exemples? En d'autres termes, quand une personne choisit-elle de définir une fonction sur "ceci" au lieu de sur le prototype (ou l'inverse)? Pour moi, le deuxième exemple est plus facile à digérer, mais combien y-a-t-il d'autres? […]

Les pratiques exemplaires en matière de succession prototypique?

Je me connecte simplement à JavaScript et j'essaie de m'emballer sur l'héritage prototypique. Il semble qu'il y ait plusieurs façons d'obtenir le même effet, alors je voulais voir s'il y a des pratiques exemplaires ou des raisons de faire les choses d'une façon ou d'une autre. Voici de quoi je parle: // Method 1 function […]

Quelle est la différence entre l'utilisation d'Object.create () et l'utilisation de l'opérateur d'affectation?

Voici quelques exemples. // case 1: var obj1 = {msg : 'Hello'}; var obj2 = obj1; obj2.msg = "Hi!"; //overwrites alert(obj1.msg); //=>'Hi!' // case 2: var obj1 = {msg : 'Hello'}; var obj2 = Object.create(obj1); obj2.msg = "Hi!"; //does not overwrite alert(obj1.msg); //=>'Hello' // case 3: var obj1 = {data: { msg : 'Hello'}} var […]

Remplacer les méthodes par l'héritage prototypique

J'utilise cette méthode de clone pour l'héritage prototypique à partir des modèles de conception JavaScript Pro, qui est essentiellement la même que la fonction objet () de Crockford . (La seule différence est que Crockford ajoute des parens d'invocation, mais comme F est vide, je ne suis pas sûr que ce soit important. Je ne […]

Est-il possible de déterminer si un objet créé avec Object.create hérite de Array en JavaScript?

Identifier les objets qui sont compliqués en JavaScript, et déterminer quels objets sont des tableaux a quelque chose d'une solution de piratage . Heureusement, il parvient à travailler dans les deux cas suivants: Object.prototype.toString.call([]); // [object Array] Object.prototype.toString.call(new Array()); // [object Array] Super, pas [object Object] en vue! Malheureusement, cette méthode parvient encore à échouer […]

Ralentissement mineur avec Crockford Prototypical Héritage

Il suffit d'expérimenter avec différentes techniques d'héritage dans JS, et a rencontré quelque chose de peu déroutant sur le modèle d'héritage prototypique de Crockford: function object(o) { function F() {} F.prototype = o; return new F(); } var C, P = { foo:'bar', baz: function(){ alert("bang"); } } C = object(P); Tout est bon – […]

La fonction de retour du constructeur JavaScript peut-elle garder les héritages?

function F() { return function() { return {}; } } var f = new F(); f instanceof F; // returns false Pour autant que je comprenne, si je veux que le instanceof fonctionne, je dois renvoyer this du constructeur. Mais je veux que le constructeur renvoie une fonction, et je ne peux pas l'attribuer. Donc, […]