這是我通常用來防止覆蓋name
屬性的方法。如何防止es6中的函數覆蓋?
let _name = Symbol('name');
class Cat {
constructor(name) {
this[_name] = name;
}
set name(newName) {
return this[_name];
}
get name() {
\t return this[_name];
}
}
// default name
let cat = new Cat('Hermione');
// new name
cat.name = 'Voldermort';
// testing
console.log(cat.name);
我的想法:name
屬性的值保存到另一個變量。
但是,如果我有多個類的屬性,就像這樣:
將被浪費創造了很多的變數保存。
let _Min = Symbol('Min'), _Max = Symbol('Max'); // and so on
是否有另一種方法來實現這一目標?謝謝!
有什麼辦法,你可以得到所有屬性的數組,比如'名字','Min','Where'等等?然後你可以使用'Proxy'並攔截set屬性操作。 – Li357
聽起來好像你會受益於[**類繼承**](https://developer.mozilla.org/en/docs/Web/JavaScript/Inheritance_and_the_prototype_chain)。然後,您可以定義要在基類中使用的變量,並只覆蓋子類中所需的變量。 –
你想讓對象不可變嗎?像['Object.freeze'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze)? – 4castle