Actionscript 3 在ActionScript 3中扩展对象原型
每当我尝试扩展对象原型时,都会出现一个错误: 错误#1056:无法在mx.core.UIComponentDescriptor上创建属性my_扩展名 我四处寻找,发现了这些: 我没有使用可视化IDE来设计阶段,而是使用MXML和AS3文件,所以我不确定如何处理这个错误 我的代码:Actionscript 3 在ActionScript 3中扩展对象原型,actionscript-3,flash,prototype,extending,Actionscript 3,Flash,Prototype,Extending,每当我尝试扩展对象原型时,都会出现一个错误: 错误#1056:无法在mx.core.UIComponentDescriptor上创建属性my_扩展名 我四处寻找,发现了这些: 我没有使用可视化IDE来设计阶段,而是使用MXML和AS3文件,所以我不确定如何处理这个错误 我的代码: Object.prototype.keys = function(): Array { var keys: Array = []; for (var key: * in this) { keys.
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;
}
使用
prototype
来扩展类似乎非常适合ActionScript 1或2
在AS3中,如果类是动态的,您可能能够创建原型
原型有以下缺点:
- 只有动态类可以扩展,例如不能向数学中添加方法
- 对存储在原型中的方法的调用执行时间更长
- 因为方法是在运行时添加的,所以编辑器不能用代码提示或使用正确的语法突出显示它们
对象
声明为基;但是,您可以定义要扩展的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
。使用prototype
扩展类似乎非常适合ActionScript 1或2
在AS3中,如果类是动态的,您可能能够创建原型
原型有以下缺点:
- 只有动态类可以扩展,例如不能向数学中添加方法
- 对存储在原型中的方法的调用执行时间更长
- 因为方法是在运行时添加的,所以编辑器不能用代码提示或使用正确的语法突出显示它们
对象
声明为基;但是,您可以定义要扩展的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
。将代码放在大括号中:对象[“键](),因为如果您在非动态对象上编写而不使用,您将得到编译时错误。无论如何,我会建议您例如:创建类ObjectUtil和函数getKeys内部,而不是使用ObjectUtil.getKeys(myObject);将代码放在大括号中:对象[“键](),因为如果您在非动态对象上编写而不使用,您将得到编译时错误。无论如何,我会建议您例如:创建类ObjectUtil和函数getKeys内部,而不是使用ObjectUtil.getKeys(myObject);您需要扩展对象吗?我认为默认情况下每个类都是一个对象?不,这是我在回答中说的。扩展对象不符合我的目的。我还是不太明白——你是在暗示对象是一个静态类吗?与其将成员原型化为类定义,不如通过扩展基类来使用面向对象的开发范例。否则,请使用一些建议用于此功能的静态ObjectUtil
类。I+1这是一个很好的答案,再加上提问的人可能不会接受任何答案。您需要扩展对象吗?我认为默认情况下每个类都是一个对象?不,这是我在回答中说的。扩展对象不符合我的目的。我还是不太明白——你是在暗示对象是一个静态类吗?与其将成员原型化为类定义,不如通过扩展基类来使用面向对象的开发范例。否则,请使用一些建议用于此功能的静态ObjectUtil
类。