构造函数之外的变量实例化与之间的差异

时间:2010-12-19 06:57:02

标签: actionscript-3 object instantiation

我必须决定是将变量放在构造函数中还是外部,但我一直觉得我缺少信息,我已经看过堆栈溢出的其他帖子,但所有提到它都是一个偏好的问题,然而我发现了两个我认为可能很重要的区别:

- 如果我决定将变量放在构造函数中,那么我必须为任何希望改变变量的函数都有一个对象参数,即使代码是类的内部代码。

-Subclassing会导致变量不出现,当类和任何子类必须具有变量才能正常运行时会导致问题。

我可能在所有这些方面都错了,但凌晨4点,我宁愿被告知我错了,因为骄傲导致错误。如果这已在其他地方得到解答而我错过了,我很抱歉,如果你能发布链接,我将不胜感激。

3 个答案:

答案 0 :(得分:0)

解释构造函数内的所有其他操作,所有其他操作都被预编译,以便它们更快地运行

答案 1 :(得分:0)

就像www0z0k已经说过的那样,构造函数之外的声明被巧妙地解释,因此在某些情况下将声明它们放在外面可能是一种性能。

  

- 如果我决定将变量放在构造函数中,那么我必须为任何希望改变变量的函数都有一个对象参数,即使代码是类的内部代码。

这是正确的。

  

-Subclassing会导致变量不出现,当类和任何子类必须具有变量才能正常运行时会导致问题。

您应该考虑要存档的内容。大多数时候你应该选择一个好的软件设计然后考虑性能。您提到的这个子类化问题也可以保护某些变量不被更改。

问候,

iuiz

答案 2 :(得分:0)

  

-Subclassing会导致变量不出现,导致变量   班级和任何问题   子类必须包含变量   为了正常运作。

如果我理解正确您正在寻找 受保护的 字段(或属性)

  

- 如果我决定将变量放在构造函数中,那么我必须拥有   任何函数的对象参数   希望改变变量,甚至   如果代码是类的内部。

Sry,我不明白......

@Performance:关于解释构造函数的所有内容,您可以在构造函数中添加一个简单的init(...)函数,它可以在构造函数中执行所有操作 - 但不会被解释。

public function ConstructorOfClass(arg1:int, arg2:*)
{
    init(arg1, arg2);
}

private function init(arg1:int, arg2:*):void
{
    // do whatever you want here
}
相关问题