我想知道是否有一种已知的方法来冻结JavaScript中对象的方法。 e.g。
var obj = {};
obj.method = function(){};
Object.freeze(obj.method);
然后obj.method = function(){//New function};
不会做任何事情。
也许这不起作用,因为严格来说,这是一个功能,但只是想知道是否有人有任何可能做我想要的解决方案。
另外,我知道deepFreeze概念,但是我试图避免使用它并添加一个where子句来仅冻结该对象,因为我的对象实际上非常大,所以我不想循环它
感谢。
答案 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
});