UnityScript和Javascript之间是有区别的,在JavaScript中,没有必要把你的变量叫做类,所以你给我们看的代码是正确的。宣布变量的类别,请参阅此示例:
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以提供附加功能,并且过去和未来的所有类实例都受此扩展的影响。
与JavaScript不同,UnityScript具有类。另外,在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."
这是有效的javascript。你甚至可以在javascript中比较对象。 –
@JanDvorak但它不能在团结工作。它使我疯狂。 –
在这段代码之前,这不是一个语法错误吗? –