ActionScript3

var a1:Array= new Array(1,2,3);

trace(a1);    //输出a1为1, 2,3

var b1:Array = a1 ;

b1[0] = 5;

trace(a1);    //输出a1为5,2,3,值已经被b1修改了

trace(b1);    //输出b1为5,2,3

AS3中的基本数据类型是Boolean,int ,Number,String,uint,值类型也是这么几种,除此都是引用类型。

java的的数据类型分有基本类型 和引用类型
基本数据类型有8大:byte,char ,short ,long, int, float ,double, boolean
引用类型有3大:类.接口.数组

AS值类型也是引用存值。

Java基本类型是直接持有值。

  1. 三元运算符

test ? expression1 : expression2

test

任何 Boolean 表达式。

test 为 true时返回的表达式expression1 。可能是逗点表达式。

test 为 false时返回的表达式expression2 。可能是逗点表达式。

Exp1

var a :int = 3;

var b: int  = a;

b = 9;      //改变b的值为9

trace(a);     //3

trace(b);      //9

(a==5)?trace(a):trace(b)    //9

4.typeof , is ,as

var my :String =“I LOVE YOU”;

trace (typeof my);        // string。typeof:返回数据类型

trace (my is String);       // true。is:判断数据类型

trace (my is Number);     // false。不是Number数据类型

trace (my as String);       //I LOVE YOU。as:判断数据类型,并返回my值

trace (my as Number);     //null。不是Number数据类型,并返回null

5.in

判断一个对象是否作为另外一个对象的键(Key)或索引

var a:Array=[1,2,3,4,5];

trace(2 in a);           // true

6.delete

删除对象任意一个实例的属性

Exp

var a:Array=[1,2,3,4,5];

trace(a);             //1,2,3,4,5

delete a[2];

trace(a);             //1,2,4,5

  1. AS3允许表达式的值不是Boolean值,会自动转换成相应的Boolean值

8.for …in  &  for each …in 枚举集合的元素

var books:Object = {

a:“《LOVE IS EVERYTHING》”,

b:“《FUCK YOUR BABY》”,

c:“《I HIT YOU》”

}

for (var k in books){

trace(“key name: “+k+”\t value:”+books[k]);

}

/* \t在正则表达式中是匹配一个制表符,通过键值访问

输出:

key name: a     value:《LOVE IS EVERYTHING》

key name: b     value:《FUCK YOUR BABY》

key name: c      value:《I HIT YOU》

*/

for each (var k in books){

race(k);

}

/* 直接访问成员

《LOVE IS EVERYTHING》

《FUCK YOUR BABY》

《I HIT YOU》

*/

8.arguments.callee

  1. == 与===的区别

10.AS3不支持抽象类(可用某些技巧实现抽象类),也不能直接实现单例模式(可以用包外类)

11.AS3不支持方法的重载,可以用…rest实现

12.  …(rest) 参数

ActionScript 3.0 中引入了一个称为 …(rest)参数的新参数声明。此参数可用来指定一个数

组参数以接受任意多个以逗号分隔的参数。此参数可以拥有保留字以外的任意名称。此参数

声明必须是最后一个指定的参数。使用此参数会使 arguments 对象变得不可用。尽管 …(rest)

参数提供了与 arguments 数组和 arguments.length属性相同的功能,但是它不提供与

arguments.callee 类似的功能。使用 …(rest)参数之前,应确保不需要使用arguments.callee。

下面的示例使用 …(rest) 参数(而非 arguments对象)来重写 traceArgArray() 函数:

function traceArgArray(… args):void

{

for (var i:uint = 0; i < args.length; i++)

{

trace(args[i]);

}

}

traceArgArray(1, 2, 3);

// 输出:

// 1

// 2

// 3

  1. 函数闭包

“函数闭包”是一个对象,其中包含函数的快照及其“词汇环境”。函数的词汇环境包括函数作用域链中的所有变量、属性、方法和对象以及它们的值。无论何时在对象或类之外的位置执行函数,都会创建函数闭包。函数闭包保留定义它们的作用域,这样,在将函数作为参数或返回值传递给另一个作用域时,会产生有趣的结果。

例如,下面的代码创建两个函数:foo() (返回一个用来计算矩形面积的嵌套函数

rectArea())和 bar()(调用 foo() 并将返回的函数闭包存储在名为 myProduct的变量中)。即使 bar() 函数定义了自己的局部变量 x(值为 2),当调用函数闭包 myProduct()时,该函数闭包仍保留在函数 foo()中定义的变量 x (值为 40)。因此, bar()函数将返回值 160,而不是 8。

function foo():Function

{

var x:int = 40;

function rectArea(y:int):int  // 定义函数闭包

{

return x * y

}

return rectArea;

}

function bar():void

{

var x:int = 2;

var y:int = 4;

var myProduct:Function = foo();

trace(myProduct(4));     // 调用函数闭包

}

bar();                     // 160

方法的行为与函数闭包类似,因为方法也保留有关创建它们的词汇环境的信息。当方法提取自它的实例(这会创建绑定方法)时,此特征尤为突出。函数闭包与绑定方法之间的主要区别在于,绑定方法中 this关键字的值始终引用它最初附加到的实例,而函数闭包中 this 关键字的值可以改变。

14.绑定方法

绑定方法有时也叫做“闭包方法”,就是从它的实例提取的方法。作为参数传递给函数的方法或作为值从函数返回的方法都是绑定方法。在 ActionScript 3.0中,新增的绑定方法类似于闭包函数,其中保留了词汇环境,即使从其实例中提取出来也是如此。绑定方法与闭包函数之间的主要不同差别是,绑定函数的 this引用保留到实现方法的实例的链接或绑定。换句话说,绑定方法中的 this 引用总是指向实现方法的原始对象。对于闭包函数,this 引用是通用的,这意味着调用函数时,该引用指向与函数关联的任何对象。

如果使用 this 关键字,了解绑定方法就很重要。重新调用 this关键字可提供对方法父对象的引用。大多数 ActionScript 程序员都希望 this 关键字总是引用包含方法定义的对象或类。但是,如果不使用方法绑定,并不是总是做到这样。例如,在以前版本的 ActionScript中,this引用并不总是引用实现方法的实例。从 ActionScript 2.0的实例中提取方法后,不但 this 引用不绑定到原始实例,而且实例类的成员变量和方法也不可用。在 ActionScript 3.0中不存在这样的问题,这是因为将方法当作参数传递时会自动创建绑定方法。绑定方法用于确保 this关键字总是引用在其中定义了方法的对象或类。下面的代码定义了名为 ThisTest的类,该类包含一个名为 foo() 的方法(该方法定义绑定方法)和一个名为 bar()的方法(该方法返回绑定方法)。类外部的代码创建 ThisTest 类的实例,然后调用 bar() 方法,最后将返回值存储在名为 myFunc的变量中。

class ThisTest

{

private var num:Number = 3;

function foo():void     // 定义的绑定方法

{

trace("foo’s this: " + this);

trace("num: " + num);

}

function bar():Function

{

最后

由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

方法)。类外部的代码创建 ThisTest 类的实例,然后调用 bar() 方法,最后将返回值存储在名为 myFunc的变量中。

class ThisTest

{

private var num:Number = 3;

function foo():void     // 定义的绑定方法

{

trace("foo’s this: " + this);

trace("num: " + num);

}

function bar():Function

{

最后

由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

[外链图片转存中…(img-Zb9ROyEg-1718550246008)]

[外链图片转存中…(img-X2aSmLLs-1718550246008)]

  • 18
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值