Actionscript 3 在AS3中,哪种方法定义函数更好?

Actionscript 3 在AS3中,哪种方法定义函数更好?,actionscript-3,function,variables,Actionscript 3,Function,Variables,从性能的角度来看,哪个函数定义更好/更快?制作一个对象并向其添加函数,还是逐个制作函数 var myCollection:Object = { first: function(variable:int):void { }, second: function(variable:int):void { } } myCollection.first(1); 或 后者。除大规模外,对性能的影响可以忽略不计,但第二次的影响会稍微快一点 基本上可以归结为范围。要从对象

从性能的角度来看,哪个函数定义更好/更快?制作一个对象并向其添加函数,还是逐个制作函数

var myCollection:Object = {
    first: function(variable:int):void {

    },
    second: function(variable:int):void {

    }
}

myCollection.first(1);


后者。除大规模外,对性能的影响可以忽略不计,但第二次的影响会稍微快一点

基本上可以归结为范围。要从对象获取函数,必须在类的作用域内找到对象的内存引用,然后在对象的作用域内找到函数的内存引用。对于第二个,您只需在类的范围内找到函数对象(所有函数都是对象)内存引用

第二种方法从本质上说,在识别正确的函数时,去掉了中间人。现在,每一个都将在不到一毫秒的时间内被找到。就你而言,它是即时的。但是如果你连续做了10万次?是的,通过在类中声明,您可能会看到性能有所提高

另外,您还将使用第一个对象向内存中添加另一个对象。添加足够多的对象(同样,需要大规模),您将看到存储在内存中的多余对象的速度会减慢


不过,您还应该关注可用性和可读性。在对象中声明意味着一旦类被实例化,函数就不可用,因此必须小心不要在对象被实例化之前调用函数。此外,您将失去代码暗示,这不是编写代码的常见方式(这意味着另一个开发人员,甚至是一年后的您自己,必须在没有来自暗示者的任何帮助或他们已经学会的标准的情况下,才能进行任何修改)

秒的速度更快,因为它不需要花费额外的费用来查找对象以找到函数。
private function first(variable:int):void {

}

private function second(variable:int):void {

}

first(1);