20200303
- date: 20200303
- author: czhang
Plan
你不知道的 JavaScript 第二部分第四章第五章
Notes
1. 混入
- 显式混入
function mixin(sourceObj,targetObj){
for(key in sourceObj){
if(!{key in targetObj}){
targetObj[key] = sourceObj[key]
}
}
return targetObj
}
- 隐式混入
2. 原型
- [[get]] 会找原型链
- for in 会找原型链 且 enumerable:true
- in 会找原型链 无论 enumerable 是否为 true
3. 属性设置和屏蔽
- 屏蔽属性:如果[[prototype]]链上层有 foo 的属性,且 writable:true,则在[[get]] obj.foo = ‘bar’ 的时候,会直接在 obj 上添加一个名为 foo 的新属性,即为屏蔽属性
- 如果[[prototype]]链上层有 foo 的属性,但 writable:false,则报错 ===> 此限制仅限于 “=” 赋值
- 如果[[prototype]]链上层有 setter 方法,则会执行 setter 方法
More
属性屏蔽 第二种 注意