"property" 如何在不使用括号的情况下像调用方法一样被调用

how a "property" can be call like it's a method without using parenthesis

有了库 'chai',我可以这样做:

expect(display).to.be.true;

如果显示为假,则测试失败,如果显示为真,则可以。

我的问题是,lib chai 如何知道“.true”属性 已被使用?没有括号,它甚至不是一种方法!这个语法的名称是什么?我怎样才能申报类似的东西?

这个库还有一个.false,一个.empty 属性,谁能用,为什么语法一样:

expect([]).to.be.empty;//OK
expect([1]).to.be.empty;//test fail
expect(false).to.be.false;//OK
expect(true).to.be.false;//test fail

对象可以有 "getter" and "setter" properties。它们分别调用您在访问或更新时提供的功能。

var o = {
  get test() { console.log("foo!") }
}

o.test;

这是 ECMAScript 5 的一项功能,在现代实现中广泛可用。