为什么会有这种类型?
因为好组织。
举个栗子:
// 第一种写法
var 人名 = '王花花';
var 狗的年龄 = 3;
var 人的年龄 = 20;
var 狗的职业 = '保卫员';
var 人的部门 = '序员鼓励部';
var 狗名 = '李拴蛋';
var 人的职业 = '序员鼓励师';
var 狗的部门 = '序员保卫处';
// 第二种写法
var 花花 = {
姓名: '王花花',
年龄: 20,
职业: '序员鼓励师',
部门: '序员鼓励部',
};
var 拴蛋 = {
姓名: '李拴蛋',
年龄: 3,
职业: '保卫员',
部门: '序员保卫处',
};
哪一种更清楚?
一目了然。
而且对象中还可以嵌套对象,这就更强大了
var 花花 = {
姓名: '王花花',
年龄: 20,
职业: '序员鼓励师',
部门: '序员鼓励部',
服务于: {
姓名: '程续缘',
技术: 'PHP'
}
};
语法
定义对象
首先是花括号
var 对象 = {
}
左边是键(key
,或者叫属性名)右边是值(value
),每一组用英文逗号隔开
var 对象 = {
键1: '值1',
键2: '值2'
}
键名一般使用英文和数字,其实使用任何字符都可以,只不过当键名中有空格和特殊字符是外部需要加引号包住
{
'yo yo yo': 'Mu Ha Ha'
}
获取对象中的属性
可以使用.
来获取属性
var obj = {
a: 1
}
obj.a // 1
嵌套的对象也没问题
var obj = {
a: 1,
b: 2,
c: {
c1: 666
}
}
obj.c.c1 // 666
那如果有奇葩的键名怎么办?
var obj = {
'a b 😷': 'mmp'
}
奇葩的键名直接用.a b 😷
取值会报错,我们可以用另一种方式来取值
obj['a b 😷'] // 'mmp'
这种方式也同样适用与一些动态的键名
var obj = {
key1: 'val1',
key2: 'val2',
key3: 'val3',
}
function get_val(id) {
var key_name = 'key' + id; // 此处将id与'key'拼接在了一起
return obj[key_name];
}
get_val(1); // "val1"
对象中的数据类型有限制吗?
没有,以下的键值都是合法的
var obj = {
a: [1], // 数组
b: {}, // 对象
c: 1, // 数字
d: true, // 布尔值
e: 'yo', // 字符串
}
声明之后还可以加新键吗?
可以。
var obj = {};
obj.a = 1;
console.log(obj) // {a: 1}
对象中的键名可以重复吗?
不可以。后一个会覆盖前一个。
你一会叫王花花一会儿叫李拴蛋,你把派出所当片场啦👿
登录后评论