每当我尝试扩展Object原型时,我都会收到错误:
错误#1056:无法在mx.core.UIComponentDescriptor上创建属性my_extension。
我四处搜寻,发现了这些:
Flash AS3: ReferenceError: Error #1056: Cannot create property
ReferenceError: Error #1056 - instance name Error
我没有使用可视化IDE来设计舞台,而是使用MXML和AS3文件,因此我不确定如何处理此错误。
我的代码:
Object.prototype.keys = function(): Array {
var keys: Array = [];
for (var key: * in this) {
keys.push(key);
}
return keys;
}
Object.prototype.values = function(): Array {
var values: Array = [];
for each (var value: * in this) {
values.push(value);
}
return values;
}
答案 0 :(得分:4)
使用prototype
扩展一个类似乎是ActionScript 1或2。
在AS3中,如果该类是动态的,您可以进行原型设计。
原型有缺点:
由于所有类都扩展了对象,因此没有必要明确声明Object
为基础;但是,您可以定义要扩展的AbstractObject类:
package
{
public dynamic class AbstractObject extends Object
{
public function AbstractObject()
{
super();
}
public function get keys():Array
{
var keys:Array = [];
for (var key:* in this)
{
keys.push(key);
}
return keys;
}
public function get values():Array
{
var values:Array = [];
for each (var value:* in this)
{
values.push(value);
}
return values;
}
}
}
您班级的子类型AbstractObject
。