JavaScript学习笔记(贰拾柒)

51 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第19天点击查看活动详情

Symbol

一种基本数据类型。 Symbol()函数会返回symbol类型的值

该类型具有静态属性和静态方法。它的静态属性会暴露几个内建的成员对象;它的静态方法会暴露全局的symbol注册,且类似于内建对象类,但作为构造函数来说它并不完整,因为它不支持语法:new Symbol()

每个从Symbol()返回的symbol值都是唯一的。一个symbol值能作为对象属性的标识符;这是该数据类型仅有的目的。

Symbol([description]) 参数:description ,字符串类型,对symbol的描述。可用于调试 但不是访问 symbol 本身。

 // 创建一个 symbol
let s = Symbol('尚硅谷');
console.log(s.description) //尚硅谷

ES11

对象的私有属性,私有属性的本质就是一个:局部变量
私有属性只允许在类的内部调用 使用 #变量名 定义私有属性

class Person {
  // 公有属性
  name;
  // 私有属性
  #age;
  #weight;
  // 构造方法
  constructor(name, age, weight) {
    this.name = name;
    this.#age = age;
    this.#weight = weight
  }

  intro() {
    console.log(this.name);
    console.log(this.#age);        // 函数内调用私有属性
    console.log(this.#weight);
     }
}
// 实例化
const girl = new Person('小红', 16, '45kg');
// console.log(girl)
// console.log(girl.name)
// console.log(girl.#age)    // 在类的外部访问不到私有属性
girl.intro()

Promise.all()

  • 接收一个 Promise 的可迭代类型对象的输入,返回一个 Promise 实例
  • 这个 Promise 的 resolve 回调是在所有输入的 Promise 的 resolve 回调都结束之后执行。只要有一个输入的 Promise 执行了 reject,或者输入不合法, Promise就会立即抛出错误,并且 reject 的是第一个抛出的错误信息
  • 适用于集合多个 Promise 的返回结果时
  1. promise.all 等待所有都完成,(或者第一个失败) 若参数中包含非 Promise 值,这些值将会被忽略,但如果 promise 执行成功,这些值会被放在返回数组中
  2. 如果传入可迭代对象是空的, Promise.all 就是同步。或者 Promise.all失败,也是同步。
  3. Promise.all() 当且仅当 传入的可迭代对象为空时为同步
  4. Promise本身时是同步的, then 、catch方法是异步的

matchAll() 方法返回一个包含所有匹配正则表达式的结果及分组捕获组的迭代器。

str.matchAll(regexp)
// 参数:    regexp    正则表达式对象。如果所传参数不是一个正则表达式对象,则会隐式地使用 new RegExp(obj) 将其转换为一个 RegExp 。
    // RegExp必须是设置了全局模式g的形式,否则会抛出异常TypeError。
    // 在 matchAll 出现之前,通过在循环中调用 regexp.exec() 来获取所有匹配项信息(regexp 需使用 /g 标志):

如果使用 matchAll ,就可以不必使用 while 循环加 exec 方式(且正则表达式需使用 /g 标志)。使用 matchAll 会得到一个迭代器的返回值