object.freeze 仅限对象方法。 JavaScript

object.freeze on object method only. JavaScript

我想知道在 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
});