JavaScript 对象
真实生活中的对象、属性和方法
在真实生活中,汽车是一个对象。
汽车有诸如车重和颜色等属性,也有诸如启动和停止的方法:
对象 | 属性 | 方法 |
---|---|---|
![]() |
car.name = porsche car.model = 911 car.length = 4499mm car.color = white |
car.start() car.drive() car.brake() car.stop() |
所有汽车都拥有同样的属性,但属性值因车而异。
所有汽车都拥有相同的方法,但是方法会在不同时间被执行。
JavaScript 对象
您之前已经学到,JavaScript 变量是数据值的容器。
这段代码把一个单一值(porsche)赋给名为 car 的变量:
1 | var car = "porsche" ; |
对象也是变量。但是对象包含很多值。
这段代码把多个值(porsche, 911, white)赋给名为 car 的变量:
1 | var car = {type: "porsche" , model: "911" , color: "white" }; |
值以名称:值对的方式来书写(名称和值由冒号分隔)。
JavaScript 对象是被命名值的容器。
对象属性
(JavaScript 对象中的)名称:值对被称为属性。
1 | var person = {firstName: "Bill" , lastName: "Gates" , age:62, eyeColor: "blue" }; |
属性 | 属性值 |
---|---|
firstName | Bill |
lastName | Gates |
age | 62 |
eyeColor | blue |
对象方法
对象也可以有方法。
方法是在对象上执行的动作。
方法以函数定义被存储在属性中。
属性 | 属性值 |
---|---|
firstName | Bill |
lastName | Gates |
age | 62 |
eyeColor | blue |
fullName | function() {return this.firstName + " " + this.lastName;} |
方法是作为属性来存储的函数。
实例
1 2 3 4 5 6 7 8 | var person = { firstName: "Bill" , lastName : "Gates" , id : 678, fullName : function () { return this .firstName + " " + this .lastName; } }; |
this 关键词
在函数定义中,this 引用该函数的“拥有者”。
在上面的例子中,this 指的是“拥有” fullName 函数的 person 对象。
换言之,this.firstName 的意思是 this 对象的 firstName 属性。
对象定义
我们定义(创建)了一个 JavaScript 对象:
实例
1 | var person = {firstName: "Bill" , lastName: "Gates" , age:62, eyeColor: "blue" }; |
空格和折行都是允许的。对象定义可横跨多行:
实例
1 2 3 4 5 6 | var person = { firstName: "Bill" , lastName: "Gates" , age:50, eyeColor: "blue" }; |
访问对象属性
您能够以两种方式访问属性:
1 | <i>objectName</i>.<i>propertyName</i> |
或者
1 | <i>objectName</i>[ "<i>propertyName</i>" ] |
例子 1
1 | person.lastName; |
例子 2
1 | person[ "lastName" ]; |
访问对象方法
您能够通过如下语法访问对象方法:
1 | <i>objectName</i>.<i>methodName</i>() |
实例
1 | name = person.fullName(); |
如果您不使用 () 访问 fullName 方法,则将返回函数定义:
实例
1 2 3 | name = person.fullName; <span style= "font-size:14px;" >方法实际上是以属性值的形式存储的函数定义。</span> |
请不要把字符串、数值和布尔值声明为对象!
如果通过关键词 "new" 来声明 JavaScript 变量,则该变量会被创建为对象:
1 2 3 | var x = new String(); // 把 x 声明为 String 对象 var y = new Number(); // 把 y 声明为 Number 对象 var z = new Boolean(); // 把 z 声明为 Boolean 对象 |
请避免字符串、数值或逻辑对象。他们会增加代码的复杂性并降低执行速度。
您将在本笔记的稍后章节学到更多有关对象的知识。