对象是现实中的具体事物在编程中的的抽象表达,JavaScript中的对象是用来保存一系列数据的集合,以键值对的形式体现。
var obj = {
name:"xiaoming",
age:10
};
对象中的“键”:
JavaScript中对象的键默认是字符串,键名如果不是标准的标识名且不是数字,则必须加上引号或者双引号,不然会报错:
var obj = {
1x:123
};
上面会报错,1x不是标准的标识名,需要加引号或者双引号:
var obj = {
"1x":123
};
对象中属性的读取:
可以使用“.”或者[]读取对象中的属性:
var obj = {
name:"小明"
};
console.log(obj.name);//输出小明
console.log(obj["name"]);//同样输出小明
需要注意的是如果用[]来读取属性必须加上引号,否则会认为是一个变量:
var name = "age";
var obj = {
name:"LT",
age:10
};
console.log["name"];//输出LT
console.log[name];//输出10,这里的name因为没加引号 认为是一个变量 指向age这个属性
当键名是数字的时候不能使用点号来读取属性,只能用[],使用点号会被认为是小数,并且对于键名是小数的情况,[]中可以不加引号:
var obj = {
10:123
};
console.log(obj.10);//这里会报错
console.log(obj[10]);//输出123
对象中属性的赋值:
对象可以先定义后赋值,对属性赋值同样是用点号或者[],同样如果键值是数字只能用[]:
var obj = {};
obj.name = "LT";
obj[10] = 123;
对象中的属性操作:
in操作:
可以使用in操作判断一个属性是否在对象中 语法:属性 in 对象
var obj = {
name:"LT",
age:26
};
console.log("name" in obj);//true
in操作不仅可以判断对象自己的属性,还可以判断继承属性:
var obj = {
name:"LT",
age:26
};
console.log("toString" in obj);//true
上面代码中toString是对象obj的继承属性。
hasOwnProperty操作:
hasOwnProperty可以判断一个属性是否是对象自己的属性 语法:对象.hasOwnProperty(属性)
var obj = {
name:"LT",
age:26
};
console.log(obj.hasOwnProperty("age"));//true
console.log(obj.hasOwnProperty("toString"));//false toSring是继承属性
delete操作:
delete操作可以删除对象的属性,会返回一个操作结果true或者false:
var obj = {
name:"LT",
age:26
};
delete obj.name;
console.log(obj.name);//返回undefined name属性被删除 不存在
使用delete命令删除一个不存在的属性不会返回false而是返回true,只要一种情况:属性存在并且不能删除 才会返回false
var obj = {
name:"LT",
age:26
};
var objA = Object.defineProperties(obj,{
sex:{
value:"男",
configurable:false
}
});
console.log(delete objA.sex);//false configurable:false不能删除
获取属性:
使用Object.keys来获取对象的属性:
var obj = {
name:"LT",
age:26
};
console.log(Object.keys(obj));//["name","age"]
遍历对象的属性:
使用for…in来遍历对象的属性:
var obj = {
name:"LT",
age:26
};
for(var key in obj){
console.log("键名:"+key);//依此输出name age
console.log("键值:"+obj[key]);//依此输出:"LT" 26
}
使用for…in遍历对象 只能遍历对象中可遍历的属性,不可以遍历的属性会自动跳过。