代码之家  ›  专栏  ›  技术社区  ›  Todd Moses

JavaScript和actionscript3的主要区别是什么?

  •  36
  • Todd Moses  · 技术社区  · 16 年前

    freeze seal 在EMCAScript-262第5版等。我想知道有什么区别?

    7 回复  |  直到 13 年前
        1
  •  34
  •   Joa Ebert Emran    16 年前

    首先,actionscript3和JavaScript都是在 ECMA-262 所以他们有很多共同点。例如,这两种语言都具有原型继承特性。但是,ActionScript完全实现 ES4

    ActionScript实现了ECMA-262和ES4的一些(但肯定不是全部)中没有定义的几个特性。

    那么AS3给ECMA-262增加了什么呢?这些也是与JavaScript的区别:

    • 包、类和接口
    • uint和int数据类型
    • E4X(ECMA-357)
    • 矢量。<T>数据类型(ES4)

        2
  •  14
  •   Stephano    16 年前

    我一直在用ActionScript和Javascript编程,从一个不那么专业的角度来看,我看到了两个主要的区别。

    ExtJS jQuery 他们试图为你简化事情,但即使有他们,你真的可以做一个惊人的数额的损害,如果你想。

    2) ActionScript更受限制,因此更易于维护。Adobe做了很多工作,让您远离ECMAScript的困难部分。ECMAScript对象、原型继承和闭包是在ActionScript中编程时确实不需要理解的三个概念。您只需要了解如何使用Adobe的“Class”对象。

    对于简单的用法,我更喜欢JavaScript。然而,一旦项目变得庞大,它就取决于您为谁编写代码。如果我有一个由5名开发人员组成的团队在一个充满活力的初创公司编程,我会立刻选择JavaScript。然而,在一个大公司或学术界,你可能会更安全地依赖Adobe的平台。

    希望有帮助。

        3
  •  5
  •   Gabriel McAdams    16 年前

        4
  •  4
  •   mythz    16 年前

    本质上,我发现的主要区别在于ActionScript更像是一种基于类的冗长静态类型语言,而javascript是一种原型语言。

    不幸的是,ActionScript中没有类型推断,所以每次您将一些我认为不必要且过于冗长的未类型化的内容保留下来时,使用Flex Builder都会发出警告,这不仅使它比javascript更冗长,而且我发现等效代码比C更冗长。

    但是,额外的详细性确实可以在编译时提高性能和额外的类型安全性。不幸的是,这也大大增加了构建时间,在任何大小的Java脚本应用程序中,我都习惯于即时反馈,而我的上一个ActionScript项目的构建时间超过了2分钟。

        5
  •  3
  •   user2336415    12 年前

    从开发人员的角度来看,最重要的是:

    2) Actionscript3在Flash Player中运行,它只有一个来自Adobe的实现,这意味着它始终是一致的,所有浏览器(只要安装了Flash Player),但Javascript直接在浏览器中运行,但每个浏览器都有自己的实现,这意味着您的Javascript代码必须针对所有目标浏览器进行测试,以确保正常工作。

        6
  •  3
  •   Paul Sweatte    8 年前

    eval . 幸运的是,你可以做几件事来缩小差距。

    您可以使用ES for ECMAScript或AS3 for ActionScript 3全局设置命名空间:

    use namespace ES;
    use namespace AS3; 
    

    如果您使用的是AS3名称空间,那么任何方法重写都必须使用AS3名称空间 以及覆盖属性。

    propertyIsEnumerable .

    您可以在动态函数中有选择地使用属性或方法的AS3命名空间版本:

    var nums:Array = new Array(1, 2, 3); 
    nums.AS3::pop(); 
    trace(nums); // output: 1,2
    

    要关闭基于类的继承,还可以使用以下编译器选项: compc -as3=false -strict=false -es=true

    import *
    class foo
      {
      dynamic function foo() 
        {
    
        }
      }
    

    如果不使用AS3命名空间,则核心类的实例将继承 在原型对象上定义的属性和方法。

    以下是ECMAScript-4和ECMAScript-2017或更高版本之间的一个共同特点:

    Feature 		 ES4/ES6+ 	ES4 Only                    
    Rest parameter 		 ☑ 
    Destructuring 		 ☑
    ByteArrays 		 ☑
    Class 		 	 ☑  
    Interface 		 		 ☑
    Static fields 		 		 ☑
    Parameter default 	 ☑
    Rest Parameters 	 ☑
    Bound methods 		 		 ☑
    dynamic this value 			 ☑
    multiple catch clauses 			 ☑
    short-circuit-and (&&=) 		 ☑
    short-circuit-or (||=) 			 ☑
    Type Annotations 			 ☑
    

    工具书类

        7
  •  -3
  •   mahatmanich    10 年前