2010-06-01 5 views
7

Quelle "laideur" résout ce qui suit? Il y a quelque chose que je ne reçois pas, et j'apprécierais aider à comprendre ce que c'est.Exemple de: "Javascript - The Good Parts"


Par exemple, en augmentant Function.prototype, nous pouvons faire une méthode disponible pour toutes les fonctions:

Function.prototype.method = function (name, func) { 
    this.prototype[name] = func; 
    return this; 
}; 

En augmentant Function.prototype avec une méthode de la méthode, nous n'avons plus à taper le nom de la propriété prototype. Ce peu de laideur peut maintenant être caché.

Répondre

15

Eh bien, la laideur est subjective, mais voyons.

Vous écrivez habituellement:

function Foo() {} 
Foo.prototype.method1 = function() { /*...*/ }; 
Foo.prototype.method2 = function() { /*...*/ }; 

vous étendez l'objet prototype un constructor function avec les propriétés que vous souhaitez hériter aux instances créées par le nouvel opérateur.

Par exemple avec var obj = new Foo(); vous créez une instance du constructeur Foo, cet objet héritera toutes les propriétés liées à l'objet Foo.prototype et d'autres objets plus élevés dans le prototype chain.

La méthode de Crockford fait la même chose, cette méthode est définie dans l'objet Function.prototype, toutes les fonctions héritent de cet objet, de sorte que vous pouvez appeler la méthode comme ceci:

function Foo() {} 
Foo.method('method1', function() { /*...*/ }); 
Foo.method('method2', function() { /*...*/ }); 

Il fondamentalement juste peaux la prototype mot du code, qui considère Crockford laid ...

"JavaScript" The Good Parts est un très bon livre, mais je pense est basé sur le point de vue personnel que Douglas Crockfor d a de la langue.

Je suis d'accord avec lui avec beaucoup de choses, mais je suis aussi en désaccord avec certains aspects ...

+1

L'utilisation du mot « prototype » semble plus explicite et évidente lors de la lecture du code. Merci pour la réponse :) – Matrym

+2

Je suis d'accord. Crockford aboie le mauvais arbre dans ce cas IMO. – bobince

Questions connexes