var obj = {};
这就是一个对象
对象 :由一组花括号组成,花括号开始括号结束,中间包裹的一些数据也可以不包裹数据(空对象)
如何检测obj
是一个对象?
var obj = {};
console.log(typeof obj);
是字符串类型的object
属性的名字和属性值
var person = {name:"heaven"};
冒号左边是属性的名字,冒号右边是属性的值
对象是由一组花括号组成的数据结构,其内部可以由多对(一对)属性名(键名):属性值(键值)组成
一组数据里有多个属性名和属性值
var person = {
name:'heaven',
age:28,
sex:'男'
};
键名和键值是一一对应的多个属性名和属性值必须用逗号隔开,最后一个可用可不用
对象可以可以有一个重复的属性呢??
var person = {
name:'heaven',
age:28,
sex:'男',
sex:'女',
};
可以看到重复的属性sex
被后面的sex
属性覆盖掉了(如果两个属性是相同的属性后面的属性会覆盖前面的属性)
对象的属性名(键名)是不能重复的
对象的增删改查
如何查看一个对象的属性呢??
var person = {
name:'heaven',
age:28,
sex:'男',
sex:'女',
};
console.log(person.name);
person.name
也可以用另一种方式,来查询当前对象的name
属性
var person = {
name:'heaven',
age:28,
sex:'男',
sex:'女',
};
console.log(person["name"]);
person["name"]
通过person
来一个中括号([]
)后面跟着的是对应的属性名字
查询对象有两种形式
- 一种是通过(
.
)点:如person.name
- 另一种是通过中括号(
[]
)里面放着的是字符串属性名字("name"
)如person["name"]
如何增加当前对象的属性呢??
var person = {
name:'heaven',
age:28,
sex:'男',
sex:'女',
};
console.log(person.hobby = "骑哈罗");
person.hobby = '骑哈罗';
给当前对象添加一个属性是hobby
值是骑哈罗
person.hobby = '骑哈罗';
此方法可以添加单一的对象属性和值,也可以添加多个
能不能通过中括号([]
)的形式添加对象中括号里面必须写字符串形式的
var person = {
name:'heaven',
age:28,
sex:'男',
sex:'女',
};
person["hobby"] = "骑哈罗";
person["frined"] = "xiaoming";
person["hobby"] = "骑哈罗";
person["frined"] = "xiaoming";
如何修改当前对象的属性呢??
var person = {
name:'heaven',
age:28,
sex:'女',
};
person.sex = "男";
person.sex = "男";
如果当前这个属性不存在当前这个值,通过赋值的话就是添加了,如果通过赋值给了一个对象已经存在的属性给了一值那就是修改了
能不能通过中括号([]
)的形式修改当前对象
var person = {
name:'heaven',
age:28,
sex:'女',
};
person["sex"] = "中性";
person["sex"] = "中性";
如何删除当前对象的属性呢??
var person = {
name:'heaven',
age:28,
sex:'女',
};
delete person.name;
delete person.name;
能不能通过中括号([]
)的形式删除当前对象
var person = {
name:'heaven',
age:28,
sex:'女',
};
delete person["age"];
delete person["age"];
对象的增删改查
查看对象的属性
person.name
person['name']
添加对象的属性
person.hobby = '骑哈罗';
*person["hobby"] = "骑哈罗";
修改对象的属性
person.sex = "男";
person["sex"] = "中性";
删除对象的属性
delete person.name;
delete person["age"];
- 如果有
name
属性 就返回true
对象特点
var person = {
11:11,
2:2,
name:"heaven",
age:28,
sex:"男",
1:1,
22:22,
9:9,
}
对象的特点
对象上不存在的属性 结果是undefined
- 对象的属性名(键名)是不能重复的
- 对象属性名的排列顺序
数字从小到大
字母从A-Z(大写先) a-z(小写后)排列 - 对象的属性名(键值)必须是字符串 如果不是字符串 会隐式转成字符串
for...in
循环
for...in
循环用于对数组或者对象的属性进行循环操作。
for(var key in 要遍历的对象){
key这个变量存放的是对象的属性名
}
var person = {
1:1,
11:11,
2:2,
22:22,
9:9,
name:"heaven",
age:28,
sex:"男",
}
for( var key in person){
console.log(key);
}
如何打印出对象的值呢???
var person = {
1:1,
11:11,
2:2,
22:22,
9:9,
name:"heaven",
age:28,
sex:"男",
}
for( var key in person){
console.log(person[key]);
//key加上双引号表示查询key的对象,结果是undefined
//不加双引号表示for in循环每次走到这个console.log里面变量值
}
for( var key in person){
console.log(key,person[key]);//打印了对象的属性名和属性值
}
分析图
怎么用for in
循环检测对象是什么数据类型的呢??
var person = {
1:1,
11:11,
2:2,
22:22,
9:9,
name:"heaven",
age:28,
sex:"男",
}
for( var key in person){
console.log(key,person[key],typeof key);
}
对象的属性名(键名)必须是字符串 如果不是字符串 会隐式转成字符串
题目
var obj1 = {};
var obj2 = {};
var obj = {};
obj[obj1] = 345;
// obj['object Object'] = 345
console.log( obj[obj2] ) //345
// obj[obj2] --> obj['object Object']