object.freeze仅限于对象方法。 JavaScript的

时间:2015-02-06 14:18:38

标签: javascript object freeze

我想知道是否有一种已知的方法来冻结JavaScript中对象的方法。 e.g。

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

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

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

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

感谢。

1 个答案:

答案 0 :(得分:1)

  

然后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
});