代码之家  ›  专栏  ›  技术社区  ›  ForYourOwnGood

ActionScript3.0,为什么它缺少好的OOP元素?

  •  2
  • ForYourOwnGood  · 技术社区  · 16 年前

    任何使用ActionScript3.0编程的人都肯定注意到它缺乏对私有构造函数和抽象类的支持。有一些方法可以解决这些缺陷,比如从应该是抽象的方法中抛出错误,但是这些解决方法很烦人,也不是很优雅。(从一个应该是抽象的方法抛出一个错误是一个运行时检查,而不是编译时,这可能会导致很多挫折)。

    我想更具体的问题是为什么ECMAscript标准不支持私有构造函数?这是未来可以期待的事情吗?

    3 回复  |  直到 16 年前
        1
  •  6
  •   Javier    16 年前

    私有构造函数和抽象类不是“好的OOP元素”。它们是C++中的好黑客。在更动态的语言中,通常不需要它们。

    特别是抽象类是完全不需要的,因为您不必在祖先中声明接口来符合接口。事实上,你甚至不必从一个共同的祖先继承来使用多态性。

    我并不是说没有这样的东西AS更好;相反,你应该用你正在使用的语言思考,而不是试图从你习惯的语言中翻译。

        2
  •  3
  •   Josh Tynjala Ivan Chernykh    16 年前

    值得注意的是,工作组已经选择以新的关注点重新启动下一版本的语言。这一努力被称为“和谐”,因为两个对立的小组对ECMAScript未来的发展方向有着截然不同的看法。这有点折衷。Harmony的发展将比旧的ES4慢得多,甚至AS3中已经实现的类语法最初也将从标准中删除。换句话说,他们将在一段时间内让它看起来更像今天的JavaScript,以专注于其他一些对即将分支的团队很重要的功能。这将成为ES3.1。稍后,新ES4将重新考虑类和一些更类似Java的OOP特性。

    那么AS3呢?基本上,Adobe使用了一个尚不完善的标准,从而抢先一步,他们也因此受到了政治的影响。然而 Adobe intends to stay involved with the ECMAScript Working Group request these features in the public Flash Player bug database

        3
  •  0
  •   back2dos    14 年前

    我知道,这个问题真的很老了,但我只是无意中犯了错误,不得不修正这个问题:

    构造函数不是面向对象的。对象应该由工厂实例化。

    尔兹