对象概述
JavaScript中的对象是属性和方法的集合体。
对象声明
对象由属性和方法组成。
- 属性:属性名(字符串)和属性值(任意类型的数据)组成。
- 方法:一种特别的属性,属性名就是函数名,属性值是一个函数。
语法如下:
var 对象名 = {
属性名: 属性值,
属性名: 属性值,
...
方法名: function ([参数列表]) {
// 方法体
},
方法名: function ([参数列表]) {
// 方法体
}
...
};
例如:
var obj = {
name: '张三',
age: 12,
gender: 'm',
study: function () {
console.log('学习...');
},
play: function () {
console.log('娱乐...');
}
};
访问对象中的属性
访问对象中的属性值有两种方式:
对象名.属性名
:编码简单,但有些情况不适合使用。如obj.name
、obj.study()
。对象名['属性名']
:编码麻烦,任何情况下都能使用。如obj['name']
、obj['study']()
。
var obj = {
name: '张三',
age: 12,
gender: 'm',
study: function () {
console.log('学习...');
},
play: function () {
console.log('娱乐...');
}
};
// 对象名.属性名
console.log(obj.name);// 访问属性值
obj.study();// 调用方法
// 对象名['属性名']
console.log(obj['name']);// 访问属性值
obj['study']();// 调用方法
补充
什么时候必须使用对象名['属性名']
的方式?
通常情况下我们都是使用对象名.属性名
的方式访问属性值或者调用方法。
但在一些特殊情况下必须使用对象名['属性名']
的方式。如:
- 属性名包含特殊字符如:
-
或空格。 - 属性名不确定的情况。
var obj = {};
// 1.给对象添加一个属性:content-type: application/json
// 错误写法
// obj.content-type='application/json';// SyntaxError: Invalid left-hand side in assignment
// console.log(obj.content-type);
// 正确写法
obj['content-type'] = 'application/json';
console.log(obj['content-type']);
// 2.属性名不确定的情况,如属性名是一个变量
var key = 'age';
var value = 18;
// 错误写法
// obj.key = value;
// console.log(obj);// { 'content-type': 'application/json', key: 18 },不是我们期望的age:18
// 正确写法
obj[key] = value;
console.log(obj);// { 'content-type': 'application/json', age: 18 }