UnityScriptとJavascriptには違いがあります。JavaScriptでは、変数をクラスに呼び出す必要はありません。したがって、あなたが私たちに示したコードは正しいです。
ただし、これはUnityScriptでは正しくありません。変数のクラスを宣言する必要があります。この例を参照してください。
function Machine(x) {
this.kind = ["bulldozer", "lathe", "car"][x];
}
var c = new Machine(2);
print(typeof c.announce); // "undefined"
Machine.prototype.announce = function() {
print("I am a "+this.kind+".");
};
print(typeof c.announce); // "function"
c.announce(); // prints "I am a car."
上に示したように、JavaScriptでは、関数はnewキーワードで呼び出されると、オブジェクトを作成できます。その後、プロトタイプ(テンプレート)オブジェクトMachineを拡張して追加機能を提供でき、過去および将来のすべてのクラスインスタンスがこの拡張の影響を受けます。
UnityScriptには、JavaScriptとは異なりクラスがあります。また、UnityScriptでは、クラスを定義すると、そのクラスはプログラムの実行時間中、多かれ少なかれ固定されます。(注:Reflectionなど、このルールにはいくつかの例外がある場合がありますが、おそらくこれは必要ないため、あまり効率的ではないため、使用しないでください。)ただし、クラスシステムには、より簡単であるという追加の利点があります。 -読み、より身近な(ほとんどの)言語。
class Machine {
var kind : String; // fields are public by default
function Machine(x : int) {
this.kind = ["bulldozer", "lathe", "car"][x];
}
function announce() {
print("I am a "+this.kind+".");
}
}
print(typeof Machine.prototype); // causes a compile-time error
var c = new Machine(2);
c.announce(); // prints "I am a car."