2009-12-13 3 views
5

Je lis un livre "Comment tout faire avec JavaScript" et j'apprends actuellement à définir des classes. Le livre dit qu'il y a 2 façons. d'abord en utilisant des fonctions dans javascript 1.x. en second lieu, en utilisant la classe dans javascript 2.0.JavaScript 2.0 classes

ce que je suis en train est:

class Car { 
    var Make : String; 
    var Model : String; 
    var Year : Integer; 
    var Color : String; 
    var FullName : String; 

    function Car (make, model, year, color) { 
     this.Make = make; 
     this.Model = model; 
     this.Year = year; 
     this.Color = color; 
     this.FullName = this.Year + " " + "<b>" + this.Make + "</b> " + this.Model; 
    } 
} 

var mySUV = new Car("Toyota", "4Runner SR5",2001, "Thundercloud"); 
document.write ("I drive a " + mySUV.FullName); 

Le code ne fonctionne pas quand je suis en train de l'exécuter. J'utilise l'éditeur de komodo pour développer et quand je définis une classe comme je l'ai déjà mentionné, cela me donne un avertissement "avertissement strict: la classe est un identifiant réservé".

Y at-il un problème avec le code? Merci d'avance pour votre aide.

+0

Quelle durée d'exécution JavaScript 2 utilisez-vous? – Quentin

+0

J'utilise Komodo editor et Firefox/3.5.5? Est-ce que vous voulez dire par Javascript runtime? – codemaker

+0

Firefox inclut le runtime. – Quentin

Répondre

0

Je ne connais aucun navigateur qui a actuellement implémenté JavaScript 2.0. C'est peut-être pourquoi vous ne pouvez pas l'exécuter.

+1

Je suis désolé. Il semble que le livre que je lis est mauvais. – codemaker

+0

L'AVM2 (FlashPlayer 9+ a implémenté EcmaScript 4, qui aurait dû devenir JavaScript 2) – TheHippo

10

JavaScript 2.0 alias ECMAScript 4 a été abandonné en 2008, avant d'être publié. Il n'y aura jamais de version basée sur les classes d'ECMAScript. Ce qui est une bonne chose.

+2

Personnellement, j'ai aimé ES4. – bgw

+2

Il y avait quelques bonnes idées dedans. Mais il y avait 3 problèmes majeurs: 1) ce n'était tout simplement pas JavaScript. Cela aurait pu être une belle * nouvelle * langue, mais ce n'était pas JavaScript. 2) Saisir simplement chaque fonctionnalité inventée à partir de chaque langue jamais créée et les jeter dans une langue n'est pas * comment * concevoir une bonne langue. 3) Vous ne faites pas de recherche originale dans un organisme de normalisation de l'industrie. Le typage progressif est cool, mais c'est toujours un problème de recherche ouvert en 2010. Vous ne mettez tout simplement pas un problème de recherche ouvert dans le langage de programmation le plus utilisé sur la planète. –

+2

* "Cela aurait pu être une belle nouvelle langue" * - En fait, ça s'appelle ActionScript 3;) – poke

-3

juste une fonction interne sera suffisant comme ci-dessous:

function Car (make, model, year, color) { 
    this.Make = make; 
    this.Model = model; 
    this.Year = year; 
    this.Color = color; 
    this.FullName = this.Year + " " + "<b>" + this.Make + "</b> " + this.Model; 
} 

var mySUV = new Car("Toyota", "4Runner SR5",2001, "Thundercloud"); 
document.write ("I drive a " + mySUV.FullName); 
+0

Est-ce que c'est plus efficace que d'utiliser des fonctions? – codemaker

+5

Ce code n'est ni ECMAScript 4 ni 6. C'est un littéral d'objet raté. –

+0

owch. C'était un objet littéral bâclé si j'en avais jamais vu un moi-même. Cependant, une meilleure réponse a depuis été plagarisée de la réponse @ PiPeep. –

1

Juste essayer de fusionner des choses ensemble, et nettoyer la réponse de Zain. Comme Jörg W Mittag l'a mentionné, ES4/JS2 est mort, alors faisons le de manière ES3/JS1.

Pour compresser la réponse de Zain:

/** 
* @constructor 
*/ 
function Car(make, model, year, color) { 
    this.Make = make; 
    this.Model = model; 
    this.Year = year; 
    this.Color = color; 
    this.FullName = this.Year + " " + 
    "<b>" + this.Make + "</b> " + 
    this.Model; 
} 
var mySUV = new Car("Toyota", "4Runner SR5",2001, "Thundercloud"); 
document.write ("I drive a " + mySUV.FullName); 

Si vous vouliez faire cela sans fonctions que vous pourriez dire:

var Car = { 
    Make : String, 
    Model : String, 
    Year : Integer, 
    Color : String, 
    FullName : String 
} 

Mais vous devez définir manuellement les valeurs, donc pas, il n'est pas vraiment un bon moyen de créer un objet complexe sans l'utilisation d'une fonction.

+0

': String' était censé être une notation de type ActionScript, il n'existe pas en JavaScript. – bobince

+0

Non, je l'ai vérifié dans le compilateur de fermeture. J'étais étonné aussi. – bgw

+0

JS2 ne peut pas être mort avant même d'avoir démarré. JS2 va être ES6. –

4

La dernière version de JavaScript est 1.8.1. Si par JavaScript 2, vous voulez dire ECMAScript 6 (ou 4), il n'y a pas encore de moteurs qui l'implémentent. Vous pouvez le convertir en code ECMA-262 en utilisant Mascara.

Pour tous les autres: Pourquoi dites-vous que JavaScript 2 est mort? Il était prévu d'implémenter ECMAScript 4 dans JavaScript 2 et que a été abandonné. JavaScript 2 sera très probablement une implémentation d'ECMAScript 6 mais il n'est pas lui-même ECMAScript 6.

+0

Ce post est trompeur, des parties d'ECMAScript 6 ont été implémentées par ex. Babel. –

+0

Ce poste n'était pas faux il y a 7 ans quand je l'ai écrit. ECMAScript 6 obtient de l'aide dans la plupart des moteurs JS de nos jours. –

0

Firefox 3.5 (que vous avez dit utiliser dans un commentaire) supports JavaScript 1.8.1, donc toutes les fonctionnalités de JS 2 ne seront pas supportées.

1

Aucun navigateur traditionnel ne prend en charge la syntaxe JavaScript 2.0 aujourd'hui.

MascaraMascara est un outil qui traduira la syntaxe JavaScript 2.0 (ou quelque chose qui lui est proche) en JavaScript ordinaire qui fonctionnera dans n'importe quel navigateur, vous obtiendrez des classes, vérifiant le type, etc. .

En outre, ActionScript 3 qui est pris en charge par Flash a une syntaxe proche de JavaScript 2.

Notez que JavaScript 2 n'est pas une norme officielle, mais plutôt le nom spécifique de Mozilla pour une nouvelle version proposée de JavaScript. Le nom officiel neutre du fournisseur pour la norme JavaScript est ECMAScript.

La version de ECMAScript qui est pris en charge par les navigateurs traditionnels aujourd'hui est ECMAScript 3.

Les extensions proposées, ce qui équivaut à ce qu'on appelle JavaScript 2.0 et Actionscript 3, était à un moment donné appelé ECMAScript 4.

Cependant, la spécification ECMAScript 4 proposée a été jugée trop ambitieuse par certains fournisseurs, et il a été décidé de faire évoluer le langage itératif à travers des étapes moins ambitieuses. La grande spécification ES4 a donc été abandonnée et une nouvelle version appelée ECMAScript 5 qui incorporait un petit nombre de fonctionnalités proposées pour ES4 a été créée dans un premier temps (notamment, les classes et les annotations de type ne font pas partie d'ES5). ES5 a été officiellement publié, mais n'est pas encore totalement supporté par les navigateurs. Le travail est en cours sur la prochaine version, le code nommé "Harmony", mais qui finira probablement par être appelé "ES6". On ne sait pas encore si ES6 inclura une syntaxe pour les classes.

La ligne du bas: vous ne pouvez pas exécuter JavaScript 2 directement dans un navigateur grand public aujourd'hui, et cela peut prendre des années avant que vous ne puissiez le faire.

Questions connexes