什么是Object
Object是 JavaScript 的一种数据类型。它用于存储各种键值集合和更复杂的实体。可以通过Object()构造函数或者使用对象字面量的方式创建对象。
在JS中,几乎所有的对象都是 Object 的实例。
创建(声明)对象
// 创建一个新对象
let obj = new Object();
obj.value = 666;
console.log(obj);
// { value: 666 }
console.log(obj.value);
// 666
console.log(typeof obj);
// object
//new Object构造函数方式
let person = new Object();
person.name = 'Tom';
person.age = 20;
console.log(person.name);
// Tom
console.log(person['name']);
// Tom
// 或
//对象字面量
let person = {
name:'Tom',
age:20
};
console.log(person.name);
// Tom
console.log(person['name']);
// Tom
静态方法
Object.assign()
Object.assign(target, ...source)
参数
target
源数据,修改后作为返回值
source
一个或多个包含要应用属性的对象
示例
const obj = { key: value };
const copy = Object.assign({}, obj);
console.log(copy);
// { key: value }
Object.create()
Object.create(proto)
参数
proto
新创建对象的原型对象
const person = {
age: 18,
printIntroduction: function () {
console.log(`我的名字是 ${this.name}. 今年 ${this.age}岁了`);
},
};
const me = Object.create(person);
me.name = 'Tom';
// name 是设置在 me 上的属性
me.age = 20;
// 继承的属性可以被覆盖
me.printIntroduction();
//我的名字是Tom,今年20岁了
Object.entries()
返回一个二维数组,每个元素包含给定对象自有的可枚举属性的键值对。
Object.entries(obj)
// obj 一个对象
const obj = {
a: 'helloWorld',
b: 2024,
};
console.log(Object.entries(obj));
// [["a", "helloWorld"],["b", 2024]]
Object.fromEntries()
将键值对[key, value]转换为对象
Object.fromEntries(iterable)
参数
iterable
一个包含对象列表的可迭代对象,例如 Array 或者 Map。每个对象都要有两个属性 :
0 : 表示属性键的字符串或者 Symbol。
1 : 属性值。
通常,该对象被实现为二元数组,第一个元素是属性键,第二个元素是属性值。
// 将Array转成对象
const arr1 = [
['a','H'],
['b','E'],
['c','L'],
['d','L'],
['e','O']
];
console.log(Object.fromEntries(arr1));
// { a:'H', b:'E', c:'L', d:'L', e:'O' }
// 将Map转成对象
const arr2 = new Map([
['aa','W'],
['bb','O'],
['cc','R'],
['dd','L'],
['ee','D']
]);
console.log(Object.fromEntries(arr3));
// { aa:'W', bb:'O', cc:'R', dd:'L', ee:'D' }
// 对象转换
// 需结合 Object.entries() 和 数组操作方法
const obj1 = { a: 1, b: 2, c: 3 };
const obj2 = Object.fromEntries(
Object.entries(obj1).map(([key, val]) => [key, val * 2]),
);
console.log(obj2);
// { a: 2, b: 4, c: 6 }
Object.is()
确定两个值是否为相同值。所有 NaN 值都相同,与 == 使用的 IsLooselyEqual
和 === 使用的 IsStrictlyEqual
不同
Object.is(value1, value2)
Object.keys()
返回一个包含所有给定对象自有可枚举字符串属性名称的数组。
Object.keys(obj)
const obj = {
a: 'helloWorld',
b: 2024,
c: false,
};
console.log(Object.keys(obj));
// ["a", "b", "c"]
与 Object.entries() 区别:Object.entries() 返回的是一个二维数组[[key, value], [key, value]],Object.keys() 返回的是只包含属性的一维数组
Object.values()
返回包含给定对象所有自有可枚举字符串属性的值的数组。
Object.values(obj)
const obj = {
a: 'helloWorld',
b: 2024,
c: false,
};
console.log(Object.values(object1));
// ["helloWorld", 2024, false]