ActionScript3(AS3)类库学习之(一)——Object基本对象

Object class 是所有类的基类,所有未申明继承的class都被默认的继承自Object class,如number,string等基本类型都是继承自Object类。甚至prototype,Class,Function等类都是继承自Object类,当然这些类虽然继承自Object类,但是还是不能当做普通的类一样操作。

一.Object的创建
可以使用关键字new 来创建Object 实例,并且可以给他们动态的赋值。

var obj:Object = new Object();
obj.a = "foo";
obj["b"] = "bar";
trace(obj.a);
trace(obj.b);

 
同时Object 实例可以按照下面的方式创建。

var obj:Object = {a:"foo", b:"bar"}
trace(obj.a);
trace(obj.b);

 
当一个类被声明为dynamic时,它就能被动态赋值,否则不能动态赋值。

public class A
{
  public function A()
  {        
  }
}
var obj:A = new A();
obj.a = "foo"; //error
obj.b = "bar"; //error
public dynamic class A
{
  public function A()
  {        
  }
}
var obj:A = new A();
obj.a = "foo";//right
obj.b = "bar";//right
trace(obj.a);
trace(obj.b);

 
二.prototype的使用
一个类的prototype对象是该对象的一个特殊的对象,它提供了一个机制用来让该类的所有对象共享该值。在编译程序的时候,当一个属性不能被在一个类的实例上找到的时候,编译器就会从代理(也就是类的prototype对象)上寻找该属性。如果那个prototype不含有那个属性,那么编译器就会继续从更高级别的类的prototype对象来寻找该属性。
prototype和class的继承和访问有如下特性:
1.class自有的属性和方法在声明为static时只能被类使用,不能被对象使用,且不支持继承。
2.class自有的属性和方法在不声明为static时只能被对象使用,不能被类使用,支持继承,属性不能被重定义,方法如果要被重定义需要加上override。
3.prototype的属性和方法可以被类使用也可以被对象使用,且都支持继承。被对象使用时,类需要定义成dynamic的,否则无法通过对象使用。被类使用时需要以class.prototype.property的形式使用不能直接使用。

    public dynamic class A
    {
        public var x:String = "x in A";
        public static var staticx:String = "staticx in A";
        prototype.px = "px in A";
        prototype.py = "py only in A";
        public function A()
        {
        }
        public function toLocaleString():String {
            return "a locale string in A";
        }
        public static function staticFunc():String
        {
            return "a static function in A";
        }
        public function thefunc():String
        {
            return "a func in A";
        }
    }
    public dynamic class B extends A
    {
        var x:String = "x in B"; //cannot redefine
        public static var staticx:String = "staticx in B";
        prototype.px = "px in B";
        public function B()
        {        
        }
        public function toString():String {
            return "a string in B";
        }
        public static function staticFunc():String
        {
            return "a static function in B";
        }
        public override function thefunc():String
        {
            return "a func in B";
        }
    }
            var ma:A = new A();
            var mb:B = new B();
            
            trace(A.staticx);
            trace(B.staticx);
            trace(ma.staticx); //undefined
            trace(A.staticFunc());
            trace(B.staticFunc());
            trace(ma.staticFunc());  //error
            
            trace(A.x); //error
            trace(ma.x);
            trace(mb.x);
            trace(ma.thefunc());
            trace(mb.thefunc());
            
            trace(ma.px);
            trace(mb.px);
            trace(mb.py);
            trace(A.prototype.px);
            trace(B.prototype.px);
            trace(B.prototype.py);
            
            trace(ma.toLocaleString());
            trace(mb.toLocaleString());
            trace(ma.toString());
            trace(mb.toString());
            trace(A.prototype.toString());
            trace(B.prototype.toString());

 
三.Object的一些属性和方法说明
共有属性
constructor:Object
指向Object class或者Object实例的构造函数
prototype:Object [static]
指向Object Class 或者Function Object 的原型(prototype)

公共方法
Object()
创建一个Object实例,并且使该实例的constructor property指向其构造函数。
hasOwnProperty(name:String):Boolean
判断是否有具有该名称的property,对于静态的属性和方法和prototype得到的属性或方法会返回false
isPrototypeOf(theClass:Object):Boolean
判断一个对象是否在指定的对象的原型链中
propertyIsEnumerable(name:String):Boolean
判断一个指定的属性是否存在并是否可列举
toLocaleString():String
返回一个代表该对象的locale-specific conventions字符串
toString() :String
返回一个代表该对象的字符串
valueOf():Object
返回对象的原始值

四.Class类
Class继承自Object,是一个特殊的类,用Class类可以实现更灵活的代码,如下例:

    public dynamic class A
    {
        public function A()
        {
        }
        public function toString():String
        {
            return "A class"
        }
    }
    public dynamic class B
    {
        public function B()
        {
        }
        public function toString():String
        {
            return "B class"
        }
    }
        var cls:Object = { "A":A as Class, "B":B as Class };
        public function CreateClass(type:String)
        {
            var myclass:Class = cls[type];
            return new myclass();
        }
            var newobj = CreateClass("A");
            trace(newobj.toString());

 
五.Function类
Function类继承自Object,是一个特殊的类,他有call和apply两个方法,这两个方法的基本功能是一样的,区别就在apply中将函数所有参数以数组的形式传入,而call则是用逗号分隔开来传入,使用function可以实现更灵活的代码,如下例:

    public dynamic class A
    {
        var ininum:int = 0;
        public function A()
        {
        }
    }
            var arr:Array = new Array(1, 2, 3);
            var obj:Object = new Object();
            obj.sumup = function(num1:int,num2:int,num3:int):int
            {
                return this.ininum + num1 + num2 + num3;
            }
            var sum1:A = new A();
            var sum2:A = new A();
            sum2.ininum = 100;
            trace(obj.sumup.apply(sum1, arr));
            trace(obj.sumup.call(sum1, 1, 2, 3));
            trace(obj.sumup.apply(sum2, arr));

 
六.几种基本类
int,uint,number是继承自Object,用来显示数字的三种类:
它们主要实现了toExponential(转为指数形式),toFixed(指定宽度),toPrecision(指定精确度)这三个函数
String用来显示字符串
Boolean用来判断是非等
Date用来处理时间
Math用来做计算,这个类不能构建对象,所有的操作都是基于类而不是对象进行的。
这些内置类都是按照值传递的,且被声明为final型类,也就是不能再被继承了。

转载于:https://www.cnblogs.com/studynote/archive/2013/03/24/2979662.html

目录 第 1 章 : 使用日期和时间 第 2 章 : 使用字符串 第 3 章 : 使用数组 第 4 章 : 处理错误 第 5 章 : 使用正则表达式 第 6 章 : 使用 XML 第 7 章 : 使用本机 JSON 功能 第 8 章 : 处理事件 第 9 章 : 使用应用程序域 第 10 章 : 显示编程 第 11 章 : 使用几何结构 第 12 章 : 使用绘图 API 第 13 章 : 使用位图 第 14 章 : 过滤显示对象 第 15 章 : 使用 Pixel Bender 着色器 第 16 章 : 使用影片剪辑 第 17 章 : 使用补间动画 第 18 章 : 使用反向运动 第 19 章 : 在三维 (3D) 环境中工作 第 20 章 : 文本使用基础知识 第 21 章 : 使用 TextField 类 第 22 章 : 使用 Flash 文本引擎 第 23 章 : 使用 Text Layout Framework 第 24 章 : 处理声音 第 25 章 : 使用视频 第 26 章 : 使用摄像头 第 27 章 : 使用数字权限管理 第 28 章 : 在 AIR 中添加 PDF 内容 第 29 章 : 用户交互的基础知识 第 30 章 : 键盘输入 第 31 章 : 鼠标输入 第 32 章 : 触摸、多点触控和手势输入 第 33 章 : 复制和粘贴 第 34 章 : 加速计输入 第 35 章 : AIR 中的拖放 第 36 章 : 使用菜单 第 37 章 : AIR 中的任务栏图标 第 38 章 : 使用文件系统 第 39 章 : 存储本地数据 第 40 章 : 在 AIR 中使用本地 SQL 数据库 第 41 章 : 使用字节数组 第 42 章 : 网络和通信基础知识 第 43 章 : 套接字 第 44 章 : HTTP 通信 第 45 章 : 与其他 Flash Player 和 AIR 实例通信 第 46 章 : 与 AIR 中的本机进程通信 第 47 章 : 使用外部 API 第 48 章 : AIR 中的 XML 签名验证 第 49 章 : 客户端系统环境 第 50 章 : AIR 应用程序的调用和终止 第 51 章 : 处理 AIR 运行时和操作系统信息 第 52 章 : 使用 AIR 本机窗口 第 53 章 : AIR 中的显示屏幕 第 54 章 : 打印 第 55 章 : Geolocation 第 56 章 : 应用程序国际化 第 57 章 : 本地化应用程序 第 58 章 : 关于 HTML 环境 第 59 章 : 在 AIR 中进行 HTML 和 JavaScript 编程 第 60 章 : 为 AIR HTML 容器编写脚本 第 61 章 : 处理 AIR 中与 HTML 相关的事件 第 62 章 : 在移动应用程序中显示 HTML 内容 第 63 章 : 安全性 第 64 章 : 如何使用 ActionScript 示例 第 65 章 : 本地数据库中的 SQL 支持 第 66 章 : SQL 错误详细消息、 ID 和参数 第 67 章 : Adobe 图形汇编语言 (AGAL)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值