JavaScript学习笔记—对象
- 属性
- 对象中可以存储多个各种类型的数据,对象中存储的数据成为属性
- 添加属性或修改属性值:对象.属性名 = 属性值
- 读取属性:对象.属性名,如果读取对象中没有的属性返回undefined
- 删除属性:delete 对象.属性名
let obj = Object();
obj.name = "孙悟空";
obj.age = 18;
obj.gender = "男";
// 修改属性
obj.name = "Tom sun";
// 删除属性
delete obj.name;
console.log(obj.name); // undefined
- 字面量
- 直接使用{}创建对象
- 使用{}创建的对象可以直接向对象中添加属性
- 语法:
{
属性名:属性值,
[属性名]:属性值,
......
}
let mySymbol = Symbol();
let obj = {
name: "孙悟空",
age: 18,
["gender"]: "男",
[mySymbol]: "特殊的属性",
// 对象
hello: {
a: 1,
b: true
},
// 函数(方法)
sayHello: function(){
alert("hello");
}
};
- 枚举属性
- 枚举属性,指将对象中的所有的属性全部获取
- for-in语句,语法:
for(let propName in 对象){
语句......
} - 有几个属性就会执行几次,每次执行时,都会将一个属性名赋值给我们所定义的变量
注意:并不是所有的属性都可以枚举,比如:使用符号添加的属性
let obj = {
name:"孙悟空",
age:18,
gender:"男",
address:"花果山",
[Symbol()]:"测试的属性" // 符号添加的属性是不能枚举的
};
for(let propName in obj){
console.log(propName, obj[propName]);
}
- 可变类型
- 对象属于可变类型
- 对象创建完后,可以任意添加删除修改对象中的属性
- 两个对象进行相等或全等比较时,比较的是对象的内存地址
- 两个变量指向同一个对象时,通过一个变量修改对象时,对另外一个变量也会产生影响
let obj = Object();
obj.name = "孙悟空";
obj.age = 18;
let obj2 = obj;
obj2.name = "猪八戒";
console.log(obj.name); // 猪八戒