在ActionScript 3,有一些类,将代表一个值,而不是类本身。很难正确地明白我的意思解释,所以借这个例子:AS3 - 选举一类的属性,而不是类本身
var str:String = "something";
var mc:MovieClip = new MovieClip();
trace(str); // something
trace(mc); // [object MovieClip]
你会发现第一个跟踪输出值,而不是[object String]
。 ontop的这一点,我仍然可以使用的String
方法,像这样:
var ar:Array = str.split('s');
即使在某种程度上,你几乎可以读取上面:
"something".split('s');
我有一个类AvLevelData
那有一些处理关卡数据的方法(本质上是一个String)。目前有一个属性data:String
,它表示核心级别的数据。
我的问题是 - 我可以复制字符串的行为,当我跟踪或分配AvLevelData
的实例时,结果实际上是字符串data
。
例如,在现阶段,我需要去:
var levelData:AvLevelData = new AvLevelData();
trace(levelData.data);
获取数据。我反而希望能够简单地做到以下几点:
var levelData:AvLevelData = new AvLevelData();
trace(levelData); // some level data string
这可能吗?
完美 - 感谢您为什么不需要使用'override'来实现这个简洁的解释 - 这会引起我一些头疼的问题。 – Marty
没问题!有趣的是:'prototype'在AS3中仍然有效,例如,您可以为* all *'Object'实例创建一个* custom *默认'toString()'实现。例如,试试这个:Object.prototype = function():String {return“DefaultString”}'。现在,当您追踪普通的'MovieClip'(或任何其他'Object')实例时,它将返回'DefaultString'。注意:通常非常不推荐向原型中的标准函数提供替代实现;但这是一个很好的教育例子。 – Peter