(一)对象方法扩展 —— 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
参数,用于获取函数的实参arguments
function 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
来获取对象的所有键名undefined
string
、 symbol
object
null
、 number
boolean
Iterator
是一种接口【即对象的属性】
iterator
接口就可以完成遍历操作ES6
创造了一种新的遍历命令 for...of
循环
iterator
主要供 for...of
消费iterator
接口的数据(即可用 for...of
遍历)
Array
Arguments
Set
Map
String
TypeArray
NodeList
ES5
异步编程使用纯回调函数
node
fs
ajax
mongodb
ES6
提供的一种异步编程解决方案
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 |