如何通过 Object.create(Object.prototype) 构建具有标准功能且属性可控的独立对象?
- 内容介绍
- 相关推荐
本文共计801个文字,预计阅读时间需要4分钟。
使用 `Object.create(Object.prototype)` 可以创建一个干净的普通对象:
为什么不用 {} 或 new Object()?
看似等价,但有细微却关键的区别:
-
{}和new Object()创建的对象,其内部原型确实是Object.prototype,但它们依赖于当前运行时中Object.prototype的状态 —— 如果该原型被篡改(如有人执行了Object.prototype.foo = ...),这些字面量对象也会继承这个污染属性; - 而
Object.create(Object.prototype)明确指定原型,语义更清晰,且在严格模式或某些沙箱环境中更可控; - 更重要的是,它不触发构造函数逻辑(无
Object调用开销,也避免潜在副作用)。
如何让属性“受控”?
“受控”指对属性的添加、修改、删除行为进行显式约束。
本文共计801个文字,预计阅读时间需要4分钟。
使用 `Object.create(Object.prototype)` 可以创建一个干净的普通对象:
为什么不用 {} 或 new Object()?
看似等价,但有细微却关键的区别:
-
{}和new Object()创建的对象,其内部原型确实是Object.prototype,但它们依赖于当前运行时中Object.prototype的状态 —— 如果该原型被篡改(如有人执行了Object.prototype.foo = ...),这些字面量对象也会继承这个污染属性; - 而
Object.create(Object.prototype)明确指定原型,语义更清晰,且在严格模式或某些沙箱环境中更可控; - 更重要的是,它不触发构造函数逻辑(无
Object调用开销,也避免潜在副作用)。
如何让属性“受控”?
“受控”指对属性的添加、修改、删除行为进行显式约束。

