[英]Javascript define a constant object property
我想要一個不可變的對象字段。 我試過了:
const a = 1; var o = { x: 'This is mutable', y: a // This should not be mutable. }; oy = 'Changed'; console.log(o);
字段y
被重新分配。
有什么辦法可以使這項工作嗎?
var obj = {a:1,b:2};
Object.defineProperty(obj,'b',{
writable:false
});
obj.b = 3;
console.log(obj.b) //output 2
obj.a = 8;
console.log(obj.a); //output 8
使用Object.defineProperty()
並將可配置設置為false。
var o = {
x: 'This is mutable'
};
Object.defineProperty(o, "y", { configurable: false, writable: false });
console.log(o);
oy的行為就像單獨調用Object.freeze一樣。
如果您想擁有一個簡單的對象,可以使用Object.defineProperty()
:
const tea = {}; Object.defineProperty(tea, 'bar', { value: 'unchanged', writable: false, configurable: false }); console.log(tea.bar); // 'unchanged' tea.bar = 'new value'; console.log(tea.bar); // 'unchanged' delete tea.bar; console.log(tea.bar); // 'unchanged'
或者,如果需要class ,則可以將getter和no-op setter一起使用:
class Foo { get bar() { return 'unchanged'; } set bar(_) {} }; const tea = new Foo(); console.log(tea.bar); // 'unchanged' tea.bar = 'new value'; console.log(tea.bar); // 'unchanged' delete tea.bar; console.log(tea.bar); // 'unchanged'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.