javascript - 如何在 javascript 类中定义公共(public)属性?

标签 javascript class

使用 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/

相关文章:

python - 构造函数和析构函数如何工作?

c++ - 如何从自己类的成员函数中访问公共(public)变量? (C++)

javascript - 如何在浏览器的警告框上显示大文本并防止文本被剪裁?

javascript - 如何在 Vue.js 中设置 optgroup 选择标签?

javascript - 如何使用 Jint 从 JavaScript 函数调用中获取正确的 C# 字符串数组

python - 在python中不使用for语句打印类列表的所有变量

python - 在类实例化期间干净地处理问题

javascript - 从外部链接轮播完整 slider 到特定元素

javascript - 使用 Mustache JS 与胶水连接/连接

php - 在php中调用定义为对象变量的匿名函数