20200303

@czhang
  • date: 20200303
  • author: czhang

Plan

你不知道的 JavaScript 第二部分第四章第五章

Notes

1. 混入

  1. 显式混入
function mixin(sourceObj,targetObj){
    for(key in sourceObj){
       if(!{key in targetObj}){
           targetObj[key] = sourceObj[key]
       }
    }
    return targetObj
}
  1. 隐式混入

2. 原型

  1. [[get]] 会找原型链
  2. for in 会找原型链 且 enumerable:true
  3. in 会找原型链 无论 enumerable 是否为 true

3. 属性设置和屏蔽

  1. 屏蔽属性:如果[[prototype]]链上层有 foo 的属性,且 writable:true,则在[[get]] obj.foo = ‘bar’ 的时候,会直接在 obj 上添加一个名为 foo 的新属性,即为屏蔽属性
  2. 如果[[prototype]]链上层有 foo 的属性,但 writable:false,则报错 ===> 此限制仅限于 “=” 赋值
  3. 如果[[prototype]]链上层有 setter 方法,则会执行 setter 方法

More

属性屏蔽 第二种 注意