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