2010-11-12 8 views
1

Si je prends ce code et compilez (optimisations avancées)Google fermeture compilateur avancé: supprimer les blocs de code à la compilation

/**@constructor*/ 
function MyObject() { 
    this.test = 4 
    this.toString = function() {return 'test object'} 
} 
window['MyObject'] = MyObject 

Je reçois ce code

window.MyObject=function(){this.test=4;this.toString=function(){return"test object"}}; 

Est-il possible, je peux supprimer la fonction toString en utilisant le compilateur de fermeture?

Répondre

3

toStringtoString est implicitement appelable, donc à moins que le compilateur de fermeture puisse prouver que le résultat de MyObject n'est jamais forcé à une chaîne, il doit le conserver.

Vous pouvez toujours marquer comme code de débogage explicite:

this.test = 4; 
if (goog.DEBUG) { 
    this.toString = function() { return "test object"; }; 
} 

puis lors de la construction non-debug, compilez avec

goog.DEBUG = false; 

Voir http://closure-library.googlecode.com/svn/docs/closure_goog_base.js.source.html qui ne

/** 
* @define {boolean} DEBUG is provided as a convenience so that debugging code 
* that should not be included in a production js_binary can be easily stripped 
* by specifying --define goog.DEBUG=false to the JSCompiler. For example, most 
* toString() methods should be declared inside an "if (goog.DEBUG)" conditional 
* because they are generally used for debugging purposes and it is difficult 
* for the JSCompiler to statically determine whether they are used. 
*/ 
goog.DEBUG = true; 
+0

Je suis essayer de l'utiliser, mais comment puis-je spécifier cela au compilateur dans http://closure-compiler.appspot.com/home? J'ai essayé de configurer goog.DEBUG-false; mais cela ne fonctionne pas ... :( – edbras

+0

@edbras, vous pouvez utiliser l'option -D pour fermer le compilateur pour le définir .De l'aide: '--define (--D, -D) VAL: Remplacer la valeur Le format est [= ], où est le nom d'une variable @define et est un nombre booléen, un nombre ou une chaîne entre guillemets simples qui ne contient pas de guillemets simples. ] est omis, la variable est marquée vrai' –

+0

J'ai le même problème. Essayer de faire le compilateur bande appels console.log avec une optimisation SIMPLE.Goog.DEBUG ne fonctionne pas dans le service en ligne pour moi. – hellectronic

Questions connexes