20200302

@czhang
  • date: 20200302
  • author: czhang

Plan

你不知道的 JavaScript 第二部分 第三章继续

Notes

1. 属性描述符

  1. writable

  2. configurable

  3. enumerable

  4. 不变性

  5. [[Get]]

    1. 首先寻找对象是否有相同名称的属性,如果有则返回。若没有,寻找原型链
    2. 实在找不到,则返回 undefined ===> 不同于引用不存在的对象(返回 ReferenceError)
  6. [[Put]]

  7. Getter Setter

    1. 给属性定义 getter、setter 时,属性会被定义为 "访问描述符"
    2. 访问描述符会忽略 value 和 writable 特性,更关注 set get 及 configurable 和 enumerable
    3. 如果只定义了 get 属性,没有定义 set 属性,无论怎样赋值,都会得到 get 的结果。
  8. 存在性

    问:如何判断一个对象没有该属性,还是该属性的值为 undefined

    1. in // 原形链
    2. myObj.hasOwnProperty() // 有时候对象可能没有连接到 myObj.property 上
    3. Object.property.hasOwnProperty.call(myObj,'a')

    可枚举性

    1. enumerable 属性为 false 时 可以直接获取、可使用 in 、可使用 hasOwnProperty
    2. 通过 myObj.propertyIsEnumerable()
    3. 通过 Object.keys() ==> 包含所有可枚举属性
    4. Object.getOwnPropertyNames() ===> 包含所有属性,无论是否可枚举
    5. keys getOwnPropertyNames 都只查找对象直接包含的属性
  9. for...of

首先向被访问对象请求一个迭代器对象,然后通过调用迭代器对象的 next()方法便利所有的返回值

2. 类

子类 父类 super 继承 多态 多重继承

More