javascript - object.freeze 仅适用于对象方法。 JavaScript

标签 javascript object freeze

我想知道是否有一种已知的方法可以卡住 JavaScript 中对象的方法。例如

var obj = {};
    obj.method = function(){};
    Object.freeze(obj.method);

然后obj.method = function(){//New function};不会做任何事情。

也许这不起作用,因为严格来说,它是一个函数,但只是想知道是否有人有任何解决方案可以实现我想要的功能。

此外,我知道 deepFreeze 概念,但我试图避免使用它并添加一个 where 子句来仅卡住该对象,因为我的对象实际上非常大,所以我不想循环它.

谢谢。

最佳答案

Then obj.method = function(){//New function}; wouldn't do anything.

是的,使用 Object.defineProperty 非常简单。

Object.defineProperty(obj, 'method', {
   value: function() {/* ... */},
   enumerable: true, // will show in Object.keys and for..in loop
   configurable: false, // can't be deleted
   writable: false // can't be redefined
});

关于javascript - object.freeze 仅适用于对象方法。 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28367776/

相关文章:

javascript - 跨源资源共享是否会影响连接到 Web 方法的所有客户端?

java - 返回 Ljava.lang.Object 的字符串值

Java 如何获取声明对象的参数?

java - 请解释使用显式转换为对象的输出

.net - 在生产 .NET 桌面程序中诊断应用程序挂起

python - 系统在运行 python 脚本时卡住

javascript - 使用相同的 Bootstrap 模式来添加新对象并编辑该对象

javascript - 删除 append 文本点击它 Jquery

javascript - Grunt 构建破坏了 SVG 图像

c# - 被阻塞的 Windows 消息循环的调试思路