使用 ES5 构造函数和原型(prototype)方法,我可以添加公共(public)(原型(prototype))属性,如下所示:
function Utils(){}
Utils.prototype.data = {};
var utils = new Utils();
console.log(utils.data); //{}
ES6 class
允许我在类中仅定义公共(public)方法。我使用类方法构建一个应用程序,我不想混合构造函数和类功能。我想出的工作代码是:
class Utils(){
get _data(){
const proto = Object.getPrototypeOf(this);
if(!proto._status) proto._data = {};
return proto._data;
}
}
const utils = new Utils();
console.log(utils._data); //{}
当我调用_data
getter方法时,它会检查原型(prototype)对象中是否存在_data
属性。如果是,则返回它,否则启动 _data
属性。
这是一个好的做法吗?还有其他方法可以做得更好吗?
最佳答案
要将 data
设为公共(public)实例属性:
class Utils {
constructor () {
this.data = {}
}
}
要使 data
成为公共(public)静态属性,get/set 可能是最好的方法:
let data = {}
class Utils {
get _data () {
return data
}
set _data (d) {
data = d
}
}
关于javascript - 如何在 javascript 类中定义公共(public)属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48737886/