diff options
Diffstat (limited to 'files/fr/mozilla/javascript_astuces/index.html')
-rw-r--r-- | files/fr/mozilla/javascript_astuces/index.html | 115 |
1 files changed, 0 insertions, 115 deletions
diff --git a/files/fr/mozilla/javascript_astuces/index.html b/files/fr/mozilla/javascript_astuces/index.html deleted file mode 100644 index f2bbb7b567..0000000000 --- a/files/fr/mozilla/javascript_astuces/index.html +++ /dev/null @@ -1,115 +0,0 @@ ---- -title: Astuces JavaScript -slug: Mozilla/JavaScript_Astuces -tags: - - Developper avec Mozilla - - JavaScript -translation_of: Mozilla/JavaScript_Tips ---- -<h2 id="Function_and_variable_naming" name="Function_and_variable_naming">XUL Tips</h2> - -<ul> - <li>Lorsque vous insérez du code dans un overlay XUL, placez vos fonctions et variables à l'intérieur d'un objet possédant un nom unique afin d'éviter des conflts avec d'autres fonctions et noms de variables existants ou futurs.</li> -</ul> - -<pre class="brush: js">var UniqueName = { - _privateMember: 3, - publicMember: "A string", - - init: function() { - this.doSomething(this.anotherMember); - }, - - doSomething: function(aParam) { - alert(aParam); - } -}; -</pre> - -<h2 id="XPConnect" name="XPConnect">XPConnect</h2> - -<ul> - <li>N'utilisez pas plus de méthodes ou de propriétés d'object qu'il vous faut. Il est plus souvent rapide de stocker le résultat dans une variable temporaire.</li> - <li>N'appelez pas les méthodes dont vous n'avez pas besoin. Par exemple, <code>windowManager.getEnumerator(aType).hasMoreElements()</code> peut être remplacé par <code>windowManager.getMostRecentWindow(aType) != null pour une simple fenêtre</code>.</li> - <li>N'interrogez des interfaces que pour avoir accès aux méthodes et propriétés de cette interface. Vous n'avez pas à interroger des interfaces pou comparer des objets, pas plus que pour passer des objets en tant que paramètres (Ceci est différent du C++, où vous devez interroger les interfaces dans ces 2 cas).</li> - <li>N'appelez pas <code>QueryInterface</code> à moins que vous en ayez réellement besoin. A la place, utilisez plutôt <code>instanceof</code>, par exemple :</li> -</ul> - -<pre class="brush: js">if (target instanceof Components.interfaces.nsIRDFResource) - return target.Value; -if (target instanceof Components.interfaces.nsIRDFLiteral) - return target.Value; -return null; -</pre> - -<ul> - <li>Ne testez pas la valeur de retour de <code>QueryInterface</code>, elle renvoie toujours la valeur originale en cas de succès. XPConnect knows all about tearoffs and modifies the object that you <code>QueryInterface</code> or <code>instanceof</code> to cache all its known interfaces.</li> - <li>Lorsque vous passez un objet à une méthode XPCOM, passez plutôt un objet XPCOM. La méthode C++ accèdera alors directement à l'objet C++. Ce n'est cependant pas toujours nécessaire. For instance the offline observer declared above is a JavaScript object that is registered with an XPCOM object, so that the call back from XPCOM executes the JavaScript method. Some XPCOM methods expect an object that implements several interfaces thus requiring you to write a <code>QueryInterface</code> method. However, in JavaScript this is quite simple even in the case of a weak reference which in C++ requires a helper class:</li> -</ul> - -<pre class="brush: js">var weakObserver = { - QueryInterface: function QueryInterface(aIID) { - if (aIID.equals(Components.interfaces.nsIObserver) || - aIID.equals(Components.interfaces.nsISupportsWeakReference) || - aIID.equals(Components.interfaces.nsISupports)) - return this; - throw Components.results.NS_NOINTERFACE; - }, - observe: function observe(aSubject, aTopic, aState) { - } -} -</pre> - -<ul> - <li>Lorsque vous devez déclarer des méthodes XPCOM, essayez d'utiliser les mêmes noms pour les paramètres de la méthodes que dans la définition de l'interface.</li> -</ul> - -<h2 id="DOM_elements" name="DOM_elements">DOM elements</h2> - -<ul> - <li>Les éléments du DOM sont juste des objets XPCOM dont certaines interfaces sont mises en cache.</li> - <li>N'appelez pas <a href="/en/DOM/element.getAttribute" title="en/DOM/element.getAttribute">getAttribute</a> pour voir si des attributs existent, appelez plutôt <a href="/en/DOM/element.hasAttribute" title="en/DOM/element.hasAttribute">hasAttribute</a> instead.</li> - <li>Utilisez une boucle sur les childNodes plutôt que d'utiliser first/lastChild avec next/previous. Mais utilisez plutôt hasChildNodes() to <code>childNodes.length > 0</code>. De même utilisez <code>document.getElementsByTagName(aTag).item(0) != null</code> plutôt que <code>document.getElementsByTagName(aTag).length > 0</code>.</li> - <li>Utilisez de préférence localName plutôt que tagName.</li> - <li>Les éléments XUL elements ont beaucoup d'attributs mappés aux propriétés. Ceci a été fait pour que vous les utilisiez ! Les propriétés sont les suivantes : - <ul> - <li>align</li> - <li>allowEvents</li> - <li>contextMenu</li> - <li>datasources</li> - <li>dir</li> - <li>flex</li> - <li>height</li> - <li>id<span style="display: none;"> </span><span style="display: none;"> </span></li> - <li>left</li> - <li>maxHeight</li> - <li>maxWidth</li> - <li>minHeight</li> - <li>minWidth</li> - <li>observes</li> - <li>orient</li> - <li>pack</li> - <li>persist</li> - <li>ref</li> - <li>statusText</li> - <li>top</li> - <li>tooltip</li> - <li>tooltipText</li> - <li>width</li> - </ul> - </li> - <li>XUL mappe l'attribut <code>ordinal</code>, mais s'il n'est pas présent il sera initialisé à "1".</li> - <li>XUL mappe également l'attribut <code>class</code> attribute, mais malheureusement <code>class</code> est un identifiant réservé. La propriété est donc appelée <code>className</code>. (La propriété pourrait avoir été implémentée ainsi <code>{{ mediawiki.external('"class"') }}</code> mais ca paraît un peu idiot.)</li> - <li>XUL mappe les attributs <code>hidden</code> et <code>collapsed</code> aux propriétés, mais n'oubliez pas qu'il s'agit de propriétés booléennes tandis que la liste ci-dessus sont toutes des propriétés de type string..</li> - <li>XUL mappe également d'autres propriétés et méthodes très utiles via le binding XBL. Ceci varie d'un élément à un autre.</li> - <li>Pour de meilleures performances donnez des ids à tous les éléments importants. En plus de localiser des éléments par tagName, XUL vous permet de localiser un élément par son attribut en commençant de n'importe quel élément dans le document.</li> -</ul> - -<h2 id="References" name="References">References</h2> - -<ul> - <li>This was started as a reprint of <a class="external" href="http://neil.rashbrook.org/JS.htm" title="http://neil.rashbrook.org/JS.htm">Neil's guide</a></li> - <li>Some more current info on this <a class="external" href="http://autonome.wordpress.com/2006/03/24/">blog post</a></li> -</ul> - -<p>{{ languages( { "ja": "ja/JavaScript_style_guide" } ) }}</p> |