《深入理解JavaScript特性》笔记

1.类、符号和装饰器

  1. 原型继承与类继承之间最主要的区别是,类可以使用extend继承其他类。
  2. 与函数声明不同,类声明不会提升到所在作用域的顶部。
  3. 类通过static关键字定义静态方法。
  4. 使用super将参数传递给底层的构造函数
  5. Symbol不具备字面量表示,不能与new同时使用,值不可变,独一无二,互不相等。
  6. Symbol作为属性可以将DOM元素映射到对象。
  7. Object.assign只会遍历自身可数的属性,不会递归对象。
  8. Object.is在执行NaN对比时会返回trueObject.is在执行+0和-0对比时会返回false,与===结果不同。

2.迭代与流程控制

  1. resolve可以导致Promise兑现或拒绝,但reject只能导致Promise被拒绝。
  2. Promise.reject的另一个用途是可以作为箭头函数的隐式返回值,这是throw语句无法做到的。
  3. 迭代器方法返回的对象必须有一个next方法。
  4. 生成器中看不到返回值的next方法,只能看到向序列中添加值的yield关键字。
  5. 生成器函数可以使用yield*将生成序列的任务委托给一个生成器对象或其他可迭代对象。
  6. 在生成器函数中使用try/catch块,能够像处理同步代码那样处理异步错误。
  7. await语句一般都可以改写成连缀的Promise,而异步函数中的变量声明则可以转移到每个Promise的反应函数中。

3.map与set

  1. ES6 map使用SameValueZero算法对键进行比较,其中NaN等于NaN,-0等于+0.
  2. WeakMap中没有迭代器协议,每个key都必须是一个对象。
  3. WeakMap中的“weak”表示其对键是弱引用的,如果除了用作WeakMap键之外,作为键的对象没有其他引用,那么它们就会被垃圾回收清除。
  4. Set没有键,**Set.entries()方法未几个中的每个元素返回[value,value]**的迭代器。
  5. map[Symbom.iterator]=map.entries
  6. set[Symbom.iterator]=set.values=set.keys
  7. WeakSet中的值必须是唯一的对象引用,如果没有其他引用,它将被垃圾回收。

3.代理Proxy

  1. 借助代理并定义明确的规则来禁止访问target对象的某些属性,对外只暴露代理而不暴露target对象,是代理的主要用途。
  2. 使用Proxy可以实现动态的属性私有化。
  3. 如果以后需要修改对象的原型,尽量使用Object.setPrototypeOf,不要使用**proto**。

4.ES6中内置API的改进

  1. Number
    Number.isFiniteisFinite更安全因为其不会产生意想不到的转换, parseInt可以解析0x,但不能解析0b0o
isFinite(null)//true,因为Number(null)的值为0
Number.isFinite(null)//false
  1. String
    字符串迭代器迭代产生的是代码点
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值