这是我通常用来防止覆盖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