object.仅冻结对象方法.JavaScript

object.freeze on object method only. JavaScript

本文关键字:方法 JavaScript 对象 冻结 object      更新时间:2023-09-26

我想知道是否有一种已知的方法可以在JavaScript中冻结对象上的方法。例如

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

那么obj.method = function(){//New function};什么都不会做。

也许这不起作用,因为严格来说,这是一个函数,但我只是想知道是否有人能找到我想要的解决方案。

此外,我知道deepFreeze的概念,但我试图避免使用它,并添加where子句只冻结该对象,因为我的对象实际上很大,所以我不想循环通过它。

谢谢。

那么obj.method = function(){//New function};什么都不会做。

是的,使用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
});