javascript - 如何使 JavaScript 对象的原型永久化?
问题描述
我可以强制不更改对象的原型吗?
笔记!有一些要求:
- 该对象的行为应该就像一个常规的对象字面量(添加/删除/配置/修改对象的属性和描述符),
- 从字面上看,唯一的新限制是原型是永久性的。
因此,除了原型是永久性的之外,我不想添加任何其他限制(诸如Object.seal/freeze/preventExtensions
对对象施加更多限制的工具)。
Object.prototype.__proto__
我是否必须进行猴子补丁 Object.setPrototypeOf
才能实现这一目标?
解决方案
一种选择是Object.preventExtensions() (注意,这会锁定整个对象的扩展,不会仅锁定原型被修改):
'use strict';
const obj = {};
Object.preventExtensions(obj);
Object.setPrototypeOf(obj, { possibleNewPrototype: 'foo' });
'use strict';
const obj = {};
Object.preventExtensions(obj);
obj.__proto__ = { possibleNewPrototype: 'foo' };
推荐阅读
- haskell - Haskell 中 TUI 的无限循环和中断
- bluetooth-lowenergy - 外设如何在蓝牙连接中获取中央设备名称
- android - 哪种类型的连接允许服务器将数据发送到客户端而无需客户端先询问?
- r - 如何按组进行配对t检验并保存结果?
- javascript - 如何从 WebAssembly 模块中检测浏览器信息?
- google-cloud-platform - 更改 BigQuery 中记录列的类型
- javascript - 用户断开连接后如何重新连接到聊天应用程序(socket js)
- jquery - 如何在 jQuery 的 .each 循环中添加字符串
- r - 在 R 中将表(2 维)转换为向量(1 维)
- go - go中的dialogflow webhook