Javascript对象
概念:一切事物皆对象
一:声明对象的方式
1.方式1:字面量
-
书写格式1:
关键字 对象名 赋值符号 大括号 ;
let obj = {};
2.方式2:构造函数
-
书写格式2:
关键字 对象名 赋值符号 new Object() ;
let obj1 = new Object();
二:对象的初始化
- 变量就是对象的属性()
- 函数就是对象的方法(行为、功能)
let person = {
name:"zhangsan",
age :18,
money:10,
foo:function(){} //正规写法
}
let person = {
name:"zhangsan",
age :18,
money:10,
foo(){} //简写方式,都是ok的
}
1,【增】
-
方法一:书写格式1:
对象.键名 赋值 表达式;
person.baomu = 5; console.log(person.baomu); //5
-
方式2:书写格式2:
对象名[键名] 赋值 表达式;
-
注1:键名必须是字符串
person["sex"] = "男"; console.log(person.sex);
-
注2:键名也可以是字符串类型的变量
let sex = "sex"; person[sex] = "男"; console.log(person.sex);
-
Symbol的适用场景
若新增一个对象存在的键名,则为覆盖
person.age = 80;
console.log(person.age); //80
解决方式:Symbol(实参)
注:实参是字符串类型,即为标识
let age = Symbol("age");
console.log(typeof age);
person[age] = 80;
console.log(person.age); //18
console.log(person[age]); //80
console.log(person); //{ name: 'zhangsan', age: 18, foo: [Function: foo], [Symbol(age)]: 80 }
2.【删除】
-
书写格式:
delete 对象名.键名;
-
注:删除方法不要加小括号
delete person.name; console.log(person); //{ age: 18, foo: [Function: foo] } delete person.foo; console.log(person); //{ name: 'zhangsan', age: 18 }
3.【修改】
法1:
person.age = 20;
console.log(person.age); //20
法2:
person["age"] = 21;
console.log(person.age); //21
4.【查找】
-
书写格式:
键名 in 对象;
-
返回值:Boolean
console.log("gender" in person); //false
console.log("age" in person); //true
遍历对象的键名
for(let key in person){
console.log(key);
}
/*
name
age
foo
*/
遍历对象的键值
for(let value of Object.values(person)){
console.log(value);
}
/*
zhangsan
18
[Function: foo]
*/
遍历对象的键值对
for(let item of Object.entries(person)){
console.log(item);
}
/*
[ 'name', 'zhangsan' ]
[ 'age', 18 ]
[ 'foo', [Function: foo] ]
*/
三:扩展
1.获取了对象中不存在的键名返回undefined
let person = {
name:"zhangsan",
age :18,
foo:function(){}
}
console.log(person);
delete person["name"]; //删除了name的属性名
console.log(person.name); //undefined
2.this的指向
let person = {
name:"zhangsan",
age :18,
foo:function(){
console.log(`我是${person.name}`);
console.log(`我${this.age}了`); //this是谁调用我我就是谁
}
}
person.foo();
/*
我是zhangsan
我18了
*/
let person1 = {
name:"l4",
age:20
}
person1.foo = person.foo; 给person1添加person的方法
person1.foo();
/*
我是zhangsan
我20了
*/