我想知道是否有一種已知的方法來凍結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