(一)对象方法扩展 —— Object.fromEntries()
- 创建一个对象,方法参数可以是一个二维数组,也可以是一个
Map对象
1.二维数组
const res1 = Object.fromEntries([
["name", "ikuko"],
["skill", "前端, PHP"],
]);
console.log(res1);
// {name: 'ikuko', skill: '前端, PHP'}
大约 1 分钟
Map 对象const res1 = Object.fromEntries([
["name", "ikuko"],
["skill", "前端, PHP"],
]);
console.log(res1);
// {name: 'ikuko', skill: '前端, PHP'}
#class Person {
// 公有属性
name;
// 私有属性
#age;
#weight;
// 构造方法
constructor(name, age, weight) {
this.name = name;
this.#age = age;
this.#weight = weight;
}
// 类内部调用
intro() {
console.log(girl.name);
console.log(girl.#age);
console.log(girl.#weight);
}
}
// 实例化
const girl = new Person("ikuko", 24, "62kg");
console.log(girl);
// Person {name: 'ikuko', #age: 24, #weight: '62kg'}
// 类外部调用:无法访问私有属性
console.log(girl.name);
// ikuko
console.log(girl.#age);
// Private field '#age' must be declared in an enclosing class
// 类内部调用:可以访问
girl.intro();
// ikuko
// 24
// 62kg
ES6 引入 rest 参数,用于获取函数的实参argumentsfunction date() {
console.log(arguments);
}
date("a", "b", "c");
// Arguments(3) ['a', 'b', 'c', callee: ƒ, Symbol(Symbol.iterator): ƒ]
... 能将数组转换为逗号分隔的参数序列... 运算符rest 参数是放在函数声明时 形参 的位置... 扩展运算符是放在调用函数时 实参 的位置// 声明一个数组
const comic = ["恶役", "恋爱", "大女主"];
// 使用 ... 转换为 '恶役', '恋爱', '大女主'
// 声明一个函数
function cartoon() {
console.log(arguments);
}
cartoon(comic);
// Arguments [Array(3), callee: ƒ, Symbol(Symbol.iterator): ƒ]
cartoon(...comic);
// 相当于cartoon('恶役', '恋爱', '大女主');
// Arguments(3) ['恶役', '恋爱', '大女主', callee: ƒ, Symbol(Symbol.iterator): ƒ]
Symbol 值唯一,用于解决命名冲突的问题Symbol 值不能与其他数据进行运算【四则运算、字符串拼接、大小比较等】Symbol 定义的对象属性不能使用 for...in 循环遍历,但是可以使用 Reflect.ownKeys 来获取对象的所有键名undefinedstring 、 symbolobjectnull 、 numberbooleanIterator 是一种接口【即对象的属性】
iterator 接口就可以完成遍历操作ES6创造了一种新的遍历命令 for...of 循环
iterator 主要供 for...of 消费iterator 接口的数据(即可用 for...of 遍历)
ArrayArgumentsSetMapStringTypeArrayNodeListES5 异步编程使用纯回调函数
nodefsajaxmongodbES6 提供的一种异步编程解决方案
Promise 是 ES6 引入的异步编程的新解决方案
Promise (excutor) {}Promise.prototype.then 方法Promise.prototype.catch 方法// 实例化Promise对象
const p = new Promise(function (resolve, reject) {
setTimeout(function () {
// 获得一个数据
let data = "数据库中的用户数据";
// // 调用resolve后p对象状态变为“成功”
// resolve(data);
// 调用reject后p对象状态变为“失败”
reject(data);
}, 1000);
});
// 调用Promise对象的then方法
p.then(
function (value) {
// p为成功时执行
console.log(value);
},
function (reason) {
// p为失败时指向
console.error(reason);
},
);
ES6 提供了新的数据结构 Set (集合)
iterator 接口
... 和 for...of 遍历| 属性/方法 | 说明 |
|---|---|
size |
返回集合的元素个数 |
add |
增加一个新元素,返回当前集合 |
delete |
删除元素,返回 boolean 值 |
has |
检测集合中是否包含某个元素,返回 boolean 值 |
ES6 提供了 Map 数据结构
iterator 接口
... 和 for...of 遍历| 属性/方法 | 说明 |
|---|---|
size |
返回 Map 的元素个数 |
set |
增加一个新元素,返回当前 Map |
get |
返回键名对象的键值 |
has |
检测 Map 中是否包含某个元素,返回 boolean 值 |
clear |
清空映射,返回 undefined |