A présent, nous attendons de Microsoft à peu près tout, surtout quand il s'agit de le navigateur. Offenser la communauté du renseignement, cependant, est un peu mal à l'aise d'accepter.
Sur le Blog IE7 est sorti aujourd'hui un article ( IE + JScript Performance Recommandations Partie 3: L'inefficacité de code javascript ), si l'on peut appeler Peter Gourevitch, PM de performance pour IE, à la partie III de son «conseil» pour les développeurs.
Premier point: pourquoi Microsoft est si déterminé à mettre en œuvre sa propre version de JavaScript - JScript appelle juste que - ce qui complique la vie à tous?
Deuxième point: parce que le moteur JScript est détenue par Microsoft, au lieu de perdre du temps à dire "nous" comment contourner les défauts, pourquoi ne pas les régler une fois pour toutes?
Laissant de côté la première suggestion de cette partie III, que vous pouvez lire directement sur le blog ou sur Ajaxian , le second est vraiment frappant, et honnêtement, je ne possède pas diregisco.
Ne pas utiliser la propriété fonctions d'accès
Quand vous dites que le progrès! En pleine 2007, un gestionnaire de projet de Microsoft nous dit développeurs de ne pas utiliser les fonctions get et set dans JScript!
La folie, bien sûr, est un mal étrange qui affecte de manière soudaine et trompeuse. JScript - dans le style de Javascript - est mis en œuvre suivant un modèle d'objet! Il s'agit d'un langage orienté objet, dans le sillage de la C + +. Le fait que les variables sont accessibles de l'extérieur (comme indiqué dans l'article - évident d'ailleurs) n'est certainement pas une fanfaronnade, en effet. La technique d'encapsulation est sa philosophie de la programmation OO. Encapsuler les propriétés du virtuel méthode get et set est une force pour le langage orienté objet, pas une limite. Vous conseillons de ne pas les utiliser n'est rien de criminel, et des problèmes de performance sont à la charge de l'interprète et de ses auteurs, et non la fin de développeur.
Donc à la fin, JScript est utilisé comme un simple C, malheur à traiter comme C + +, sinon "impallare" le navigateur ou autre.
En outre, comme indiqué sur le blog, le tout est un faux problème parce que JScript PAS met en œuvre les véritables fonctions get et set ne Javascript fait!
Mais le problème, évidemment, reste. En JavaScript (JScript désolé mais je ne peux pas le digérer), il existe différentes techniques pour créer un objet. Par exemple, vous pouvez créer à la volée comme ceci:
1 2 3 4 5 | { var myObject = { , miaProprieta: 0, ( ) { alert ( "Hello" ) ; } mioMethodo: function () {alert ("Bonjour");} }; |
De cette façon, je n'ai pas déclaré une classe. Le but est pour ainsi dire déclare et crée en même temps. C'est un moyen rapide lorsque l'objet dont nous avons besoin est unique.
Or, ce qui équivaut à des fins pratiques:
1 2 3 4 5 6 7 8 | CMyObject fonction () { = 0 ; ce miaProprieta = 0.; = function ( ) { alert ( "Hello" ) } ce. myMethod = function () {alert ("Bonjour")} } / / new CmyObject ( ) ; iMyObject CMyObject var = new (); |
) e poi si crea esplicitamente l'oggetto con new . Dans ce cas, nous définissons d'abord la classe - à l'aide d'une function - ( CmyObject ), puis vous créez explicitement l'objet à new .
Une partie des questions stylistiques liées à l'unique développeur, le problème de savoir comment accéder aux propriétés d'une classe reste. Je recommande fortement à toutes les parties intéressées, comumque, de lire les réponses au blog de Microsoft, vraiment intéressant.
Sur le Blog, il y avait trois modes d'accès: avec les fonctions get et set, directs et mobiles de prototype. A la fin de la bonne chose, c'est que sur le blog il ya un code pour effectuer une testdrive, un test des trois méthodes mentionnées ci-dessus. Le code est présent sur le blog, mais je déclare ici par souci d'exhaustivité:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | <Script> / / Lent définition de voiture Fonction SlowCar () { = 17 ; . cette m_tireSize = 17; = 250 ; // One can always dream! ce. m_maxSpeed = 250, / / On peut toujours rêver! = SlowCar_get_tireSize ; . cette GetTireSize = SlowCar_get_tireSize; = SlowCar_put_tireSize ; . cette SetTireSize = SlowCar_put_tireSize; } SlowCar_get_tireSize function () { ; retourner cette m_tireSize.; } value ) fonction de SlowCar_put_tireSize (valeur) { = value ; . cette m_tireSize = value; } </ Script> <Script> / / Faster voiture, pas plus accesseurs de propriété Fonction FasterCar () { = 17 ; . cette m_tireSize = 17; = 250 ; // One can always dream! ce. m_maxSpeed = 250, / / On peut toujours rêver! } </ Script> <Script> / / Prototype de voiture, utilisez les fonctionnalités de langage! Fonction PrototypeCar () { = 17 ; . cette m_tireSize = 17; = 250 ; // One can always dream! ce. m_maxSpeed = 250, / / On peut toujours rêver! } = function ( ) { return this . m_tireSize ; } ; .. PrototypeCar Prototype GetTireSize = function () {return cette M_tireSize;.} = function ( value ) { this . m_tireSize = value ; } ; . PrototypeCar Prototype SetTireSize = function (value) {cette M_tireSize = value;.}.; </ Script> <Script> Fonction TestDrive () { new SlowCar ( ) ; // Safe and reliable, probably not fast slowCar SlowCar var = new () / / Sûr et fiable, probablement pas rapide new FasterCar ( ) ; // Lacks air-bags, probably faster fasterCar FasterCar var = new () / / manque d'air-bags, probablement plus rapide new PrototypeCar ( ) ; // Can technology win the day? protoCar PrototypeCar var = new () / / technologie peut l'emporter? ( new Date ( ) ) . getTime ( ) ; var start = (new Date ()) de getTime ().; var i = 0 ; i < 100000 ; i ++ ) { slowCar. SetTireSize ( slowCar. GetTireSize ( ) + 1 ) ; } for (var i = 0; i <100000; i + +) {slowCar SetTireSize (slowCar. GetTireSize () + 1);.} ( new Date ( ) ) . getTime ( ) ; var fin = (new Date ()) getTime ().; "Slow Car " + ( end - start ) + "<br>" ; . sortie innerHTML + = "Slow Car" + (fin - start) + "Photos"; new Date ( ) ) . getTime ( ) ; start = (new Date ()) getTime ().; var i = 0 ; i < 100000 ; i ++ ) { fasterCar. m_tireSize += 1 ; } for (var i = 0; i <100000; i + +) {fasterCar m_tireSize + = 1;.} new Date ( ) ) . getTime ( ) ; fin = (new Date ()) de getTime ().; "Faster Car " + ( end - start ) + "<br>" ; . sortie innerHTML + = "Faster Car" + (fin - start) + "Photos"; new Date ( ) ) . getTime ( ) ; start = (new Date ()) getTime ().; var i = 0 ; i < 100000 ; i ++ ) { protoCar. SetTireSize ( protoCar. GetTireSize ( ) + 1 ) ; } for (var i = 0; i <100000; i + +) {protoCar SetTireSize (protoCar. GetTireSize () + 1);.} new Date ( ) ) . getTime ( ) ; fin = (new Date ()) de getTime ().; "Prototype Car " + ( end - start ) + "<br>" ; sortie innerHTML + = "prototype de voiture" + (fin - de départ) + "Photos".; } </ Script> "TestDrive();" > Test Drive Cars !</ button > <Button Onclick = "TestDrive ();"> Test Drive Cars! </ Button> "output" ></ div > <div Id = "output"> </ div> |
Maintenant, c'est la sortie (par rapport à ma machine) avec IE7:
Slow Car 515
Faster Car 63
Prototype de voiture 547
Avec FireFox (v.2.0.0.1):
Slow Car 156
Faster Car 47
Prototype de voiture 172
Avec Opera (v.9.10):
Slow Car 172
Faster Car 47
Prototype de voiture 172
En résumé
IE7 sort vraiment mauvais ... Je ne sais pas si vous avez remarqué la différence énorme. Je dirais donc JScript pourrait être supprimé, supprimé, effacé, vaporisé. Nous espérons que Microsoft décide d'adopter ses substituts trop javscript et non.










Il n'y a aucun commentaire pour cet article
Laisser un commentaire