Как Unity JS имеет класс?

Я читал статью о Unity JS. В статье был показан пример класса в unity js.

class Person{
    var name;
    var career;
}

//Create objects of type Person
var john = Person();
john.name = "John Smith";
john.career = "doctor";
Debug.Log(john.name + " is a " + john.career);

Похоже, что Unity JS действительно поддерживает ключевое слово class. Как он поддерживает class с JavaScript? Используют ли они мертвую спецификацию ES4 или модифицированную версию ES3 или 5?


person Moon    schedule 07.09.2012    source источник


Ответы (2)


Прочтите эту статью о различиях между UnityScript и JavaScript: http://wiki.unity3d.com/index.php?title=UnityScript_versus_JavaScript

Кроме того: Википедия описывает UnityScript как "специальный язык с синтаксисом, вдохновленным ECMAScript".

person Bentleyo    schedule 07.09.2012
comment
Добро пожаловать в Stack Overflow! Краткое изложение связанного контента значительно улучшит этот ответ (и поможет предотвратить проблемы, если ссылка устареет позже). - person Joachim Sauer; 07.09.2012
comment
Для целей этого вопроса я думаю, что самая важная фраза из этой статьи: «Язык Unity .js даже близко не соответствует этой спецификации [ECMAScript]». - person James Allardice; 07.09.2012
comment
Краткое резюме было бы неплохо, как отметил Иоахим Сосер, но я думаю, что должен принять его как ответ. Информация по ссылке верная. - person Moon; 07.09.2012

Javascript Unity — это не настоящий Javascript, это новый язык для начинающих с похожим синтаксисом. Некоторые люди предпочитают называть его UnityScript, потому что это просто два разных языка.

Javascript в Unity — это объектно-ориентированный язык на основе классов, который поддерживает все функции ООП и может быть скомпилирован в тот же ассемблерный код, что и C# в Unity.

например, файл javascript «Foo.js» в Unity

var myVar : int;
function Update() {}

идентичен сценарию C#, например

class Foo : MonoBehaviour {
    int myVar;
    void Update() {}
}

Я имею в виду 100% идентичность, хотя вы не можете найти ключевое слово «класс» в Foo.js, но на самом деле вы создаете объект Foo.

вы можете унаследовать класс Foo в другом скрипте «Boo.js», чтобы проверить, что я говорю:

class Boo extends Foo {
    function Update() {}
}

JavaScript в Unity имеет синтаксис javascript, но дух C#.

person Chchwy    schedule 08.09.2012