JS在构造函数中使用get

JS use get in constructor

在一个"basic"对象中,很容易定义一个'get'属性.

var anObject = {
  get aProperty() {
    return "abc";
  }
}
document.write(anObject.aProperty); //abc

我找到了在构造函数中添加 get 属性 的解决方案。

var BasicConstructor = function ()
{
     Object.defineProperty(this, "aProperty", {get : function(){ return "abc"; }});
}
var anOtherObject = new BasicConstructor ();

document.write(anOtherObject.aProperty); //abc

他们的解决方案更简单易读吗?我尝试了一些类似下面的解决方案但没有成功。

var BasicConstructor = function ()
{
    this.aProperty = get ()
    {
        return "abc";
    }
}
var anOtherObject = new BasicConstructor ();

document.write(anOtherObject.aProperty); //abc

this.aproperty = get () {} 是无效语法。您需要 "function" 关键字(您实际上根本不需要 get,但如果需要可以保留它)

var BasicConstructor = function ()
{
    this.aProperty = function get ()
    {
        return "abc";
    }
}
var anOtherObject = new BasicConstructor ();
    
document.write(anOtherObject.aProperty()); //abc

由于您的问题 标记为

你可以只使用 es6 class 语法和 getter:

class BasicConstructor {
    get aProperty() { return 'abc'; }
};
var anOtherObject = new BasicConstructor();

document.write(anOtherObject.aProperty); //abc