注册|登录

联系电话:024-31891684  13390130939
沈阳软件公司--沈阳软件定制

沈阳软件开发_沈阳软件公司_沈阳软件定制/软件/最新技术

Latest technology最新技术

as 3的基本语法

浏览量:4097

as3 的值和引用这两者比较有关系的是“赋值”和“函数传参”两个行为,期间又需要分“基元类型”和“对象”来讨论。

我们知道as语言中所有的数据类型都继承自Object,包括基元数据类型,但是在值和引用操作时它们的确需要区别对待。

我们将基元数据类型称为“非结构对象”,与之对应的其他Object称为“结构对象”。

下面将进行几种实验,结论大概就是

1、 基元数据类型按照值操作,代表基元数据的非结构对象也是按照值操作的。

2、 结构对象一般按照“引用”操作,但需要注意交换赋值的情况

3、As3中的“引用”操作其实不是真正意义上的引用,只是类似于“指针”传递的一种伪“引用”。As3中所有操作底层意义都是值操作,只不过针对结构对象时是“指针”值的值操作。

4、As3中的函数传参,对基元类型相当于新副本的值操作。对结构对象,相当于“指针”值新副本的值操作。

5、 必要的时候使用深层次拷贝操作,特别是在多层次框架结构中。

=================

基元类型(包括Boolean、Number、int、uint 和String)

赋值:按照值操作。

var a:int=3;

var b:int=a;

b=6;

trace(a,b);// 3 6 即b的改变不会带来a的改变

函数传参:按照值操作

var a:int=3;

function f1(b:int):void{

b=6;

}

f1(a);

trace(a);//3 即在函数内部生成了新副本,其变化不会带来a的改变

与前面的赋值操作是等价一致的

=================

对象Object

赋值:按照引用操作

var a:Object={x:1,y:2};

var b:Object=a;

b.x=6;

trace(a.x);//6 即b的改变会带来a的改变

—-下面模拟复杂对象赋值—

var c:Object={i:10,j:11}

var a:Object={x:1,y:c};

var d:Object=a.y;

var b:Object=a;

d.i=6;

trace(a.y.i);//6

trace(b.y.i);//6 这里需要格外注意,as3的引用行为是无孔不入的,自定义对象的子对象遭遇引用操作,特别是多层架构中,隐蔽的引用操作会带来意想不到的问题。

沈阳团购网|营口网站制作|沈阳软件公司|软件定制|网站建设|加盟易势|提交问题