as3与as2区别浅谈

As3与As2
变量声明:声明变量的时候如果不加数据类型的话,那么as2中的
会默认类型为Object 但在as3中不是这样的,不加数据类型的话,那么
该变量就被赋值为未声明的变量类型(untyped)默认值undefined
as3中允许声明变量而不赋值,在这种情况下该变量将被赋予默认值
as3中没有long,char 类型数据  添加了uint的数据类型
在as3数组中可以创建不同类型的数据放到数组中,由于没有数据类型的
区分所有的原始初始化后默认值null;当String类型转换成Number类型时
要判断是否转换成功!(Number("123"))
as3中的is ,as ,in运算
is用来判断一个对象是否属于一种类型返回true,false表示不属于该类型
例:trace(9 is Number);//输出true
as 与is 的格式相同 但内容不同,如果一个对象属于一种类型,那么as返回
该对象否则返回null;
例:trace(1as number);//输出1:
 trace(1 as Array);//输出null;
in 关键字用来判断一个对象是否作为另一个对象的key或索引,存在返回ture
不存在返回false
例如:
var a:Array=["1","w","e"];
trece(2 in a);//数组a包含索引为2的元素 返回true;
var b:Object={ary:a,name:"ok"};
trace("ary" in b);//返回true 确实有ary的键
delete 在as3中的特殊变化
在as2中可以使用delete关键字来删除任何一个对象但在as3中delete关键字的作
用已经大大减少了,他只采用删除对象的动态实例属性,非动态属性不能删除
如果要将一个属性所持有的引用属性删除 将null赋给该该属性即可
例:
var b:Object={ary:"one",name:"ok"};
delete b.ary;//删除成功,因为ary是b的动态属性
若delete b;//删除会报错
b=null;//
trace(b);//输出null 此时b变量持有原有对象的引用已经被删除了
as3特殊的用法在条件判断这块如果一个表达式不是boolean类型的数据那么
会自动进行类型转换的
for.. 与 for each ..in 的区别很简单for  ...in 的枚举变量代表的是键
必须通过数组访问符[]来访问才能得到成员
而for each ...in 的枚举变量k则直接代表的是集合成员
switch的case 可以是string
as3中的function参数都保留在了函数自动生成一个arguments对象找中
arguments如同一个数组,按照参数的定义数序保存值传入的参数,可以是公用
arguments[0],arguments[i]访问传入的参数她还有一个length表示当前传入参数的数目
还有一个属性callee表示持有指向当前的函数的引用通常来做递归
在as2中可以无视一个函数的定义,传入的任意多的参数,但在as3中也要定义
提供一个关键字...rest只要在参数中定义了..rest那么就可以接受任意多的参数,这些参数
以数组的形式保存在rest中,rest只是推荐的命名,我们可以改成其它的参数
as3中的Class的种类:动态类,密封类
动态类 Dynamic class 和密封类 Sealed class动态类生成的实例可以在运行是动态的添加
而密封类不可以
例:
package demo
{
 public class Demo extends Sprite
 {
  public function demo()
  {
   var demo1:Demo1=new Demo1();
   var demo2:Demo2=new Demo2();
    demo2.name="asdfasdf";
    tarce(demo2.name);
   //而Demo1的实例就不能动态的创建函数或者方法
  }
 } 
}
class Demo1
{
 public var param1:String ="Demo1 param";
}
dynamic class Demo2
{
 public var param2:String="Demo2 param";
}
as2与as3中定义一个class的文件名都必须在package中,所不同的是
as2中的package中的路径直接下载class前面,而在as3中是新增关键字package
关键字来定义,class关键字后只需要定义class的名字就可以了,另外
as3中的每个.as文件中只能定义一个class但as3中可以定义多个Class
与.as文件名相同的class对外可见,其它都是包外类,是有该as文件中的
class才能访问as2中如果一个类没有加任何的访问控制符那么该类将默认为
public 而在as3中没有加任何的访问修饰符那么将默认为internal类型的.
as2中的private成员可以被子类访问到的,而as3中的private才是真正的private
as2中子类可以继承父类的静态成员的as3中是不可以的
as3中的protected不提供包内成员访问的,只有子类才能访问
as3与as2中方法重写:as3中方法重写必须使用关键字:override在前面标注,不然报错
private是不能被重写的,as2中的子类成员是要定义了同样的名字就是重写了父类的方法
而且重写的方法的参数类型和数目返回值都可以不同而在as3中不可以重写属性
重写方法不可以改变方法的参数类型和数目重写方法这块,被关键字final修饰的方法不能被重写的
父类的private的成员不能被重写的重写方法必须满足1:必须使用关键字override关键字在行首;
子类中被重写的犯法要和父类中定义的方法有同样的访问修饰符,同样的参数数目,和类型
返回值类型不能在子类重写父类的实例属性的类型super()不能在静态方法中使用
as3新增final关键字,在as3之前的版本中是没有的
as3新增关键字namespace,package并且可以自定义namespace
例:package org.domain
{
 pubilc namespace demo;
}
as3中接口不能定义常量,属性只能定义方法,定义的方法包括实例方法,静态方法
getter和setter方法接口中的方法默认都是public类型的
Array浅谈
push(元素1....);在数组尾部添加一个新的元素
unshitf(元素1....);//在数组头部添加一个或多个元素返回新增后数组的长度
删除数组元素pop shift;
pot();将数组最后一个元素删除
shift();将数组的第一个元素删除返回被删除的元素
数组中插入或者删除元素 splice
1.splice(删除点的索引,要删除的元素的数目,新元素1,......新元素1,);//删除的元素的索引可以是
负数,表示倒数多少个
2.splice(删除点索引,要删除的元素数目);//表示删除数组中某几个位置之后 的元素
3.splice(删除点索引);//删除数组中某位置之后的所有元素
4..splice(删除点的索引,0,新元素1,......新元素1,);//在数组中某位置之后,新增元素
//以上的方法返回值都是一个数组包含了删除的那些元素
splice();方法是改变了数组中的内容若不想改变数组中的内容建议使用slice();
slice(起点索引,终点索引);//获取数组中的部分元素
关于深复制和浅复制?
当数组中的元素全部都是基本数据类型是即全部都是值类型是没有浅复制和深复制的
概念的若当属组元素全部是复杂数据类型时,即引用类型时,那么复制就有两种选择
一种是浅复制,一种是深复制生成的数组浅复制很简单,调用原数组的slice();方法或者
concat();方法不传任何参数例如:var copy:Array=myArray.concat();
var copy:Array=myArray.slice();
深复制:例如:
var obj:Object={name:"demo1",text:"test2"};
var array:Array={1,2,3};
var foo:Array=["element1","element2","element3"];
var fooBA:ByteArray=new ByteArray();
fooBA.writeObject(foo);
fooBA.position=0;
var bar:Array=fooBA.readObject() as Array;
数组排序:reverse,sort , sortOn
reverse();数组倒序返回排序后的新数组
sort();//默认排序
sort(排序方式);//排序方式:
1.Array.CASEINSENSITIVE // 表示大小写不敏感按字母排序,如果数字从小到大
2.Array.DESCENDING// 表示按照字母倒序
3.Array.UNIQUESORT//安装必须唯一的属性排序。如果比较值相同则放弃排序
4.Array.RETURNINDEXEDARRAY//让sort()和sortOn();函数返回值返回排序后的索引列表,同时保持原数组不变
5.Array.NUMERIC or 16 强制按照sort()和sortOn();中对数组的采用从小到大的排序,否则不设置方式,sort();和sortOn();将把数字当成
字母来排序

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值