2010-10-19 12 views
2

je fait une recherche rapide sur ce qui est le sens de la coloration onglet Firebug DOM et je vois l'explication ci-dessous from herefonction constructeur Firebug vs fonction utilisateur

points de texte en gras rouge de couleur « fonction constructeur »

Le texte en gras de couleur verte indique "fonction utilisateur".

Quelle est la différence entre les deux types de fonctions?

Répondre

1

La fonction jQueryest une fonction de constructeur ($ est simplement une référence à jQuery). Vous pouvez voir que quand vous voyez sa définition:

var jQuery = function(selector, context) { 
    // The jQuery object is actually just the init constructor 'enhanced' 
    return new jQuery.fn.init(selector, context); 
}, 
… 
jQuery.fn = jQuery.prototype = { 
    init: function(… 

Vous pouvez reproduire ce comportement (la coloration rouge gras) lors de la définition d'une fonction constructeur et ajouter quelque chose à son objet prototype, comme

var testFunc = function() { 
    /* nothing so far */ 
}; 

testFunc.prototype.baz = function() { 
    /* nothing, this gets boring */ 
}; 

ou même juste un nombre aléatoire

testFunc.prototype.baz = 4; 

Notez que cela ne se conforme pas à la définition réelle d'un constructor function en JavaScript. Si vous testez le code source lié dans Firebug, car sera coloré en vert et non en rouge. De plus, voir The Benefits of JavaScript Prototype.

1

Comme l'exemple de Marcel montre, Firebug marque des objets qui typeof « fonction » et qui ont une propriété « prototype » avec au moins un sous-propriété comme « userClass »

http://code.google.com/p/fbug/source/browse/branches/firebug1.7/content/firebug/dom.js#431

Il n'y a vraiment pas une telle chose comme une "fonction constructeur" en Javascript, juste des fonctions qui peuvent être utilisées comme constructeurs. N'importe quelle fonction peut être utilisée pour créer des objets, mais ce n'est vraiment intéressant que si la fonction a un prototype.

+0

merci pour vos réponses aussi merci Marcel – Fatih