我想知道是否有一种已知的方法来冻结JavaScript中的对象的方法。例如object.freeze仅用于对象方法。 JavaScript
var obj = {};
obj.method = function(){};
Object.freeze(obj.method);
然后obj.method = function(){//New function};
不会做任何事情。
也许这是行不通的,因为它严格地说是一个函数,但只是想知道是否有人可以做任何我想要的解决方案。
此外,我意识到deepFreeze的概念,但我试图避免使用它,并添加一个where子句来冻结该对象,因为我的对象实际上非常大,所以我不想循环它。
谢谢。
['Object.defineProperty()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty),可以使属性不可改变的。 – Pointy 2015-02-06 14:21:53
'Object.freeze'正在严格地说:即阻止新属性被添加到它;防止现有属性被删除;并防止改变现有属性或其可枚举性,可配置性或可写性。所以'方法'现在被冻结。但是你实际上只想在'obj'上定义属性'method',并且如上所述'definedProperty'就是你需要的。但是如果没有'freeze',你仍然可以执行,例如'obj.method.something = function(){};' – Xotic750 2015-02-06 14:48:01