基本数据类型只是一个一个独立的值。前边我们也提到过了,程序就是对现实世界的抽象,这就带来了一个问题,现实世界中存在东西是各种各样的,怎么能用这样几个简单的值就能表示呢?很显然只有基本数据类型是不够的,所以在JS中还有一些“值”,用来表示更加复杂的数据。
对象(object)
现在假设有这样一个需求,需要在JS中来表示一个人的信息。人的信息包含了三个内容(姓名、性别和年龄)。如果说使用已有的技术手段,你可能会这么做。
let name = '汤姆'
let gender = '男'
let age = 15
通过三个变量确实可以存储人的三个信息,但似乎又不是那么的合适。变量和变量之间是相互独立的,所以name、gender和age本身就是三个互相独立的变量。从结构上讲它们没有任何的关系,然而实际上这三个数据应该同属于一个“人”。如何在程序中体现出这一层关系呢?这里就需要使用到对象。
对象在JS中实则就是一个容器,一个“值”的容器。在对象中可以存放不同类型的值,如此一来便可以在对象中存储多个值,从而表示出一些更加复杂的数据。
要使用对象首先需要先创建一个对象,在JS中对象用大括号({})表示,我们可以之间通过{}
来创建对象。为了方便使用,还是需要讲一个对象赋值给变量。
let o = {} //创建一个对象,赋值给变量o
现在变量o所指向的值就是一个对象,你可以通过console.log()
打印一下看看对象到底长什么样子。
容器已经有了,下边可以向容器中添加值。对象中存储的值被称为属性,属性由两部分组成,属性名和属性值。向对象中添加属性:
对象.属性名 = 属性值
现在向对象o中添加三个属性:
let o = {} //创建一个对象,赋值给变量o
o.name = 'Tom'
o.gender = '男'
o.age = 15
console.log(o)
添加属性后发现对象从{}
变为了{name: "Tom", gender: "男", age: 15}
。现在三个值同属为一个对象,在结构上体现了整体的关系,o这个对象就完成了对一个人的抽象。抽象你可能还不太理解,但可以先这么记,在对象中可以同时存储多个值。
值存进去了,要如何取出来呢?简单:对象.属性
console.log(o.name) // Tom
console.log(o.gender) // 男
console.log(o.age) // 15
对象中的属性主要分成了两个部分,像o.name、o.gender、o.age中的name、gender、age这些属于属性名,属性名的要求和标识符的是一致,还有一些特殊的情况,我们暂时先不讨论。属性值可以是任意值,啥都行!啥都行!只要是值就可以作为对象的属性值!
对象字面量
上边这种用法,属于先创建对象然后再添加属性。除此之外也可以在创建对象时,直接向对象中添加属性:
{属性名:属性值,属性名:属性值,属性名:属性值}
上边的对象o也可以使用这种方式创建:
let o = {
name:'Tom',
age:15,
gender:'男'
}
这两种写法作用都是一样的没有任何区别,这种创建对象的方式叫做对象字面量,字面量的语法和CSS中声明块非常像,只是属性间不使用 ; 而是 , 隔开。另外需要注意,如果是最后的属性(上例中的 gender 属性),后边不能在写 , 了。
对象有了,也许你可以尝试自己创建一个对象,来存储一下你的个人信息。