JavaScript-Object对象
# 属性的简洁表示法
ES6允许对象的属性直接写变量,这时候属性名是变量名,属性值是变量值
const age = 12;
const name = "Amy";
const person = {age, name};
person //{age: 12, name: "Amy"}
//等同于
const person = {age: age, name: name}
1
2
3
4
5
6
2
3
4
5
6
# 方法名也可以简写
const person = {
sayHi(){
console.log("Hi");
}
}
person.sayHi(); //"Hi"
//等同于
const person = {
sayHi:function(){
console.log("Hi");
}
}
person.sayHi();//"Hi"
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
如果是Generator 函数,则要在前面加一个星号
const obj = {
* myGenerator() {
yield 'hello world';
}
};
//等同于
const obj = {
myGenerator: function* () {
yield 'hello world';
}
};
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 对象的新方法
# Object.assign(target, source_1, ···)
用于将源对象的所有可枚举属性复制到目标对象中。
let target = {a: 1};
let object2 = {b: 2};
let object3 = {c: 3};
Object.assign(target,object2,object3);
// 第一个参数是目标对象,后面的参数是源对象
target; // {a: 1, b: 2, c: 3}
1
2
3
4
5
6
7
2
3
4
5
6
7
浅拷贝
Object.assign()
方法实行的是浅拷贝,而不是深拷贝。const obj1 = {a: {b: 1}}; const obj2 = Object.assign({}, obj1); obj1.a.b = 2; obj2.a.b // 2
1
2
3
4
5源对象
obj1
的a
属性的值是一个对象,Object.assign()
拷贝得到的是这个对象的引用。这个对象的任何变化,都会反映到目标对象上面。同名属性的替换
对于这种嵌套的对象,一旦遇到同名属性,
Object.assign()
的处理方法是替换,而不是添加。const target = { a: { b: 'c', d: 'e' } } const source = { a: { b: 'hello' } } Object.assign(target, source) // { a: { b: 'hello' } }
1
2
3
4数组的处理
Object.assign()
可以用来处理数组,但是会把数组视为对象。Object.assign([1, 2, 3], [4, 5]) // [4, 5, 3]
1
2取值函数的处理
Object.assign()
只能进行值的复制,如果要复制的值是一个取值函数,那么将求值后再复制。const source = { get foo() { return 1 } }; const target = {}; Object.assign(target, source) // { foo: 1 }
1
2
3
4
5
6
7
# Object.is(value1, value2)
用来比较两个值是否严格相等,与(===)基本类似
Object.is("q","q"); // true
Object.is(1,1); // true
Object.is([1],[1]); // false
Object.is({q:1},{q:1}); // false
1
2
3
4
2
3
4
# Object.setPrototypeOf
设置原型对象
const school = {
name:'hhh'
}
const cities = {
xiaoqu:['1','2','3']
}
Object.setPrototypeOf(school,cities)
console.log(school) // school的原型上有cities
// 不推荐这样做 推荐:在创建对象的时候 设置好原型对象
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
Object.keys
获取对象所有键
Object.value
获取对象所有值
Object.entries
返回一个给定对象自身可遍历属性[key,value]的数组
const school = {
name:'hhh'
}
const m = new Map(Object.entries(school))
console.log(m.get('name')) // hhh
1
2
3
4
5
2
3
4
5
Object.getOwnPrototypeDescriptors()
返回属性的描述对象
上次更新: 2024/08/14, 04:14:33