es5 拾漏
es5 中被我遗忘的点
属性描述符
1 | // ES5中使用Object.defineProperty/defineProperties定义属性时,可以使用value/writable/configurable/enumerable或者get/set/configurable/enumerable |
Object.freeze 方法
冻结一个对象,不能向其添加新的属性,不能修改其已有属性的值,不能删除已有的属性,不能修改已有属性的 enumerable/configurable/writable 属性;isFrozen 返回是否是冻结对象。
Object.seal 方法
密封一个对象,不能添加新属性,已有属性不可配置,但已有属性的值可以修改。isSealed 判断是否被密封。
Object.preventExtensions
使一个对象不能再添加新的属性(仅阻止添加自身的属性。但属性仍然可以添加到对象原型)。
关于 try/catch/finally
1 | function a(){ |
首先看一下 es5 中对 try/finally 的定义:
The production TryStatement : try Block Finally is evaluated as follows:
- Let B be the result of evaluating Block.
- Let F be the result of evaluating Finally.
- If F.type is normal, return B.
- Return F.
由上定义,可知,try 和 finally 中的代码都会执行。只是看返回哪一个的问题了。因此,上面的会打印:finally 123.