ES6功能没有参数?

时间:2017-09-12 18:17:27

标签: javascript ecmascript-6

有没有办法让一个没有参数调用的函数?例如,我有这个类

export class Student {
  constructor(ssn) {
    this.SSN = ssn;
  }
  SocialSecurityNumber() {
    return this.SSN;
  }
}

我希望能够做到这一点:

let student = new Student(123456);
console.log(student.SocialSecurityNumber);

现在这不起作用了,但是我可以使用一种语法来实现这个目标吗?

2 个答案:

答案 0 :(得分:4)

只是添加一个用括号student.socialSecurityNumber()调用函数的替代方法,你可以把它变成一个吸气剂:

class Student {
  constructor(ssn) {
    this.SSN = ssn;
  }
  get socialSecurityNumber() {
    return this.SSN;
  }
}

const student = new Student(123456);
console.log(student.socialSecurityNumber);

这样你可以使用与属性相同的语法来调用它。

答案 1 :(得分:1)

如果您支持Object方法,则可以添加类似于您在C#中看到的语法糖的对象属性。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty

基本上,

Object.defineProperty(this, 
                      'SocialSecurityNumber',
                      {
                          get: function() { return this.SocialSecurityNumber(); }
                      }

在构造函数中