首页 > 解决方案 > 如何使 JavaScript 对象的原型永久化?

问题描述

我可以强制不更改对象的原型吗?

笔记!有一些要求:

因此,除了原型是永久性的之外,我不想添加任何其他限制(诸如Object.seal/freeze/preventExtensions对对象施加更多限制的工具)。

Object.prototype.__proto__我是否必须进行猴子补丁 Object.setPrototypeOf才能实现这一目标?

标签: javascriptprototypeprototype-programmingprototype-chain

解决方案


一种选择是Object​.prevent​Extensions() (注意,这会锁定整个对象的扩展,不会仅锁定原型被修改):

'use strict';
const obj = {};
Object.preventExtensions(obj);
Object.setPrototypeOf(obj, { possibleNewPrototype: 'foo' });

'use strict';
const obj = {};
Object.preventExtensions(obj);
obj.__proto__ = { possibleNewPrototype: 'foo' };


推荐阅读