zoukankan      html  css  js  c++  java
  • Javascript对象


    对象简介

    1.对象

    ECMA-262把对象(object)定义为“属性的无序集合,每个属性存放一个原始值、对象或函数”。严格来说,这意味着对象是无特定顺序的值的数组。

    2.对象的构成

    在ECMAScript中,对象由特性(attribute构成),特性可以是原始值,也可以是引用值。如果特性存放的是函数,它将被看作对象的方法(method),否则该特性被看作对象的属性(property)。

    3.声明和实例化
    对象的创建方式是用关键字new后面跟上实例化的类的名字。

    var oObject=new Object();
    var oStringObject=new String();
    如果构造函数无参数,括号则不是必需的。

    4.对象引用

    在ECMAJavascript中,不能访问对象的物理表示,只能访问对象的引用。每次创建对象,存储在变量中的都是该对象的引用,而不是对象本身。

    5.对象废除

    ECMAScript拥有无用存储单元收集程序,意味着不必专门销毁对象来释放内存。当再没有对对象的引用时,称该对象被废除了。运行无用存储单元收集程序时,所有废除的对象都被销毁。每当函数执行完它的代码,无用存储单元收集程序都会运行,释放所有的局部变量,在一些其他不可预知的情况下,无用存储单元收集程序也会运行。
    把对象的所有引用都设置为null,可以强制性地废除对象。当变量oObject设置为null后,对第一个创建的对象的引用就不存在了。这意味着下次运行无用存储单元收集程序时,该对象将被销毁。每用完一个对象将其废除 ,来释放内存。


    对象字面量

    一个对象字面量就是包围在一对花括号中零或多个“名/值”对。对象字谜拿了可以出现在任何允许表达式出现的地方。

    //属性名可以是包括空字符串在内的任何字符串
    var empty_object = { };
    //在对象字面量中,如果属性名是一个合法的JavaScript标识符且不是保留字,则并不强制要求用引号扩住属性名。所以用引号扩朱"first-name"是必需的,但是否括住"first_name"是可选的。
    //逗号用来分隔多个"名/值"对。
    //JavaScript的标识符中包含连接符(-)是不合法的,但允许包含下划线(_)
    var stooge = {
        "first-name":"Jone",
        "last-name":"Howard"
    }

    属性的值可以从包括另一个对象字面量在内的任意表达式中获得。
    对象是可嵌套的:

    var fligt = {
        airline:"Ocen",
        number:815,
        departure:{
            IATA:"SYD",
            time:"2004-09-23",
            city:"Sydney"
        },
        arrival:{
            IATA:"LAX",
            time:"2004-09-24 10:42",
            city:"Los"
        }
    };

    检索

    要检索对象里包含的值,可以采用在[ ]后缀中括住一个字符串表达式的方式。

    如果字符串表达式是一个字符串字面量,且是一个合法的JavaScript标识符且不是保留字,也可以用 点( . )语法代替。 优先考虑 点 ( . )语法。

        stooge["first-name"] 
        flight.departure.IATA

    若检索一个并不存在的成员属性的值,将范围undefined。

    || 运算符可以用来填充默认值。

        var middle = stooge["middle-name"]||"(none)";
        var status = fligt.status || "unknown";
    //尝试从undefined的成员属性中取值会导致TypeError异常。这时可以通过&&运算符来避免错误。

    引用

    对象通过引用来传递。它们永远不会被复制。

        var x = stooge;
        x.name = "Mike";
        var nick = stooge.name;
        //因为x和stooge是指向同一个对象的引用,所以nick为"Mike"
    
        var a = {}, b = {} , c = {};
        //a,b和c每个都引用一个不同的空对象
    
        a=b=c={};
        //a,b,c都引用同一个空对象。

    原型

    每个对象都连接到一个原型对象,并且它可以从中继承属性。所有通过对象字面量创建的对象都连接到Object.prototype,它是JavaScript中的标配对象。


    枚举

    for in语句可以用来遍历一个对象中的所有属性名。该枚举过程将会列出所有的属性——包括函数和你可能不关心的原型中的属性——所以必须要过滤掉那些你不想要的值。最常用的过滤器是 hasOwnProperty 方法,以及使用typeof来排除函数。

        var name;
        for(name in another_stooge){
            if(typeof anoother_stooge[name] !== 'funciton'){
                document.writeln(name+":"+another_stooge[name]);
            }
        }

    属性名出现的顺序是不确定的,若想以特定顺序出现,最好的办法就是完全避免使用for in语句,而是创建一个数组。


    删除

    delete运算符可以用来删除对象的属性。

    它不会触及原型链中的任何对象。

    删除对象的属性可能会让来自原型链中的属性透现出来。
    即,删除对象属性后会从原型链中寻找。。


    减少全局变量污染

    为你的应用只创建一个唯一的全局变量。

    var MYAPP = { };
    //该变量此时变成了你的应用的容器
    MYAPP.stooge={
        "fitst_name":"Jone",
        "last-name":"Mike"
    };

    时间日期:Date对象

    1.定义日期

    Date对象用于处理日期和时间。
    可以通过new关键字来定义Date对象。

    var myDate=new Date();

    返回当日的日期和时间,如何使用Date()方法获得当日的日期。

    alert(Date())
    (1)getTime()
    getTime()返回从1970年1月1日至今的毫秒数。
    (2)getDay()

    数学计算:Math对象

    1.Math对象

    Math对象的作用是执行普通的算术任务。
    Math对象提供多种算术值和函数。无需再使用这个对象之前对它进行定义。

    2.算术值

    JavaScript提供8种可被Math对象访问的算术值。
    (1)常数
    (2)圆周率
    (3)2个平方根
    (4)1/2的平方根
    (5)2的自然对数
    (6)10的自然对数
    (7)以2为底的e的对数
    (8)以10为底的e的对数

    3.算术方法
    除了可被Math对象访问的算术值以外,还有以下几个常用的函数(方法)可以使用。

    (1)round():使用Math对象的round方法对一个数进行四舍五入。
    (2)random():使用Math对象的random()方法来返回一个介于0和1之间的随机数。
    (3)max():使用max()来返回给定的数中较大的数。
    (4)min():使用min()来返回给定的数中较小的数。

  • 相关阅读:
    Alpha版使用说明
    团队绩效评估计划
    丹佛机场行李处理系统分析
    第一个Spring冲刺周期团队进展报告
    用户体验
    总结
    Beta版
    Alpha版使用说明书
    5-26课堂作业——组员投票Alpha版存在的问题
    冲刺周期二--站立会议07
  • 原文地址:https://www.cnblogs.com/aixing/p/13327803.html
Copyright © 2011-2022 走看看