什么是JavaScript对象?

对象是JavaScript的基本数据类型。对象是一种复合值:它将很多值(原始值或者其他对象)聚合在一起,可通过名字访问这些值。对象也可看做是属性的无序集合,每个属性都是一个名/值对。属性名是字符串,因此我们可以把对象看成是从字符串到值得映射。然而,对象不仅仅是字符串到值的映射,除了可以保持自有属性,JavaScript对象还可以从一个称为原型的对象继承属性。对象的方法通常是继承的属性。这种“原型式继承”(prototypal inheritance)是JavaScript的核心特征。

除了字符串、数字、true、false、null和undifined之外,JavaScript中的值都是对象。

对象直接量

创建对象最简单的方式就是在JavaScript代码中使用对象直接量。对象直接量是由若干名/值对组成的映射表,名/值对中间用冒号分隔,名/值对之间用逗号分隔,整个映射表用花括号括起来。属性名可以是JavaScript标识符,也可以是字符串直接量(包括空字符串)。属性值可以是任意类型的JavaScript表达式,表达式的值(可以是原始值也可以是对象值)就是这个属性的值。下面有一些例子:

        var empty={};//没有任何属性的对象
        var point={x:0,y:0}//两个属性
        var point2={x:point.x,y:point.y+1};//更复杂的值
        var book={
            "main title":"JavaScript",//属性名字中有空格,必须用字符串表示
            'sub-title':"The Definitive Guide",//属性名字里面有连字符,必须用字符串表示
            "for":"all audiences",//for是保留字,必须用引号
            author:{              //这个属性的值是一个对象
                firstname:"David",    //这里的属性名都没有引号 
                surname:"Flanagan"
            }
        }

在ECMAScript5(以及ECMAScript 3的一些实现)中,保留字可以用作不带引号的属性名。然而对ECMAScript 3来说,使用保留字作为属性名必须使用引号引起来。在ECMAScript 5中,对象直接量中的最后一个属性后的逗号将忽略,且在ECMAScript 3的大部分实现中也可以忽略这个逗号,单在IE中则报错。

对象直接量是一个表达式,这个表达式的每次运算都创建一个新的对象。每次计算对象直接量的时候,也都会计算它的每个属性的值。也就是说,如果在一个重复调用的函数中的循环体内使用了对象直接量,它将创建很多新对象,并且每次创建的对象的属性值也有可能不同。

posted @ 2019-05-13 12:54  请叫我二狗哥  阅读(3188)  评论(0编辑  收藏  举报