Классы Javascript 2.0

Я читаю книгу, "Как Сделать Все с JavaScript", и я в настоящее время изучаю, как определить классы. В книге говорится, что существует 2 пути. сначала с помощью функций в JavaScript 1.x. во-вторых, с помощью класса в javascript 2.0.

то, что я пробую:

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);

Код не работает, когда я пытаюсь выполнить его. Я использую редактора Комодо для разработки и когда я определяю класс как, я упомянул прежде, Он дает мне предупреждающее "строгое предупреждение: класс является зарезервированным идентификатором".

Есть ли что-то не так с кодом? Заранее спасибо за любую справку.

5
задан Kirk 22 August 2012 в 19:23
поделиться

7 ответов

Последняя версия JavaScript - 1.8.1. Если под JavaScript 2 вы имеете в виду ECMAScript 6 (или 4), то еще нет движков, которые его реализуют. Вы можете преобразовать его в код ECMA-262 с помощью туши .

Всем остальным: Почему вы говорите, что JavaScript 2 мертв? Были планы реализовать ECMAScript 4 в JavaScript 2 и , от которого отказались . JavaScript 2, скорее всего, будет реализацией ECMAScript 6, но сам не ECMAScript 6.

4
ответ дан 18 December 2019 в 14:47
поделиться

JavaScript 2.0, также известный как ECMAScript 4, был оставлен в 2008 году, прежде чем он был выпущен. Версии ECMAScript на основе классов никогда не будет. Это хорошо.

0, также известный как ECMAScript 4, был заброшен в 2008 году, еще до того, как он был выпущен. Версии ECMAScript на основе классов никогда не будет. Это хорошо.

0, также известный как ECMAScript 4, был заброшен в 2008 году, еще до того, как он был выпущен. Версии ECMAScript на основе классов никогда не будет. Это хорошо.

10
ответ дан 18 December 2019 в 14:47
поделиться

Просто пытаюсь объединить все вместе и очистить ответ Зайна.

Как сказал Йорг В. Миттаг, ES4 / JS2 мертв, поэтому давайте сделаем это так же, как ES3 / JS1.

] Чтобы сжать ответ 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);

Если вы хотите сделать это без функций, вы можете сказать:

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

Но тогда вам придется вручную установить значения, так что нет, на самом деле нет хорошего способа сделать сложный объект без использования функции.

1
ответ дан 18 December 2019 в 14:47
поделиться

Я не знаю ни одного браузера, в котором в настоящее время реализован JavaScript 2.0. Возможно, поэтому вы не можете его запустить.

0
ответ дан 18 December 2019 в 14:47
поделиться

Firefox 3.5 (which you said you are using in a comment) supports JavaScript 1.8.1, so any JS 2 features will not be supported.

0
ответ дан 18 December 2019 в 14:47
поделиться

будет достаточно просто внутренней функции, как показано ниже:

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);
-3
ответ дан 18 December 2019 в 14:47
поделиться

Сегодня ни один из распространенных браузеров не поддерживает синтаксис JavaScript 2.0.

Mascara - это инструмент, который переводит синтаксис JavaScript 2.0 (или что-то близкое к нему) в обычный JavaScript, который будет работать в любом браузере, так что вы получаете классы, проверку типов и т. Д., Но не о чем беспокоиться по поводу совместимости.

Кроме того, ActionScript 3, поддерживаемый Flash, имеет синтаксис, близкий к JavaScript 2.

Обратите внимание, что JavaScript 2 не является официальным стандартом, скорее это конкретное имя Mozilla для предлагаемой новой версии JavaScript. Официальное название стандарта JavaScript, не зависящее от производителя, - ECMAScript.

Версия ECMAScript, которая сегодня поддерживается основными браузерами, - это ECMAScript 3.

Предлагаемые расширения, эквивалентные тому, что называется JavaScript 2.0 и ActionScript 3, когда-то назывались ECMAScript 4.

Однако предлагаемые расширения. Некоторые поставщики сочли спецификацию ECMAScript 4 слишком амбициозной, и было решено развивать итеративный язык с помощью менее амбициозных шагов. Следовательно, большая спецификация ES4 была оставлена, и вместо этого в качестве первого шага была создана новая версия под названием ECMAScript 5, которая включала небольшое количество функций, предложенных для ES4 (в частности, классы и аннотации типов не являются частью ES5). ES5 был официально выпущен, но еще не полностью поддерживается браузерами. Работа над следующей версией под кодовым названием «Harmony» продолжается, но, вероятно, завершит работу над версией ES6. Пока неясно, будет ли ES6 включать синтаксис для классов.

Итог: сегодня вы не можете запускать JavaScript 2 напрямую в любом популярном браузере, и могут пройти годы, прежде чем вы сможете это сделать.

1
ответ дан 18 December 2019 в 14:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: