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()来返回给定的数中较小的数。

原文地址:https://www.cnblogs.com/aixing/p/13327803.html