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 == […]
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 […]
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 […]
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? […]
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 […]
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 […]
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 […]
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 […]
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 – […]
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, […]