在ES6中是否有与Python风格的类属性相同的东西?

时间:2016-03-09 23:32:31

标签: javascript python oop ecmascript-6

Python类具有这个简洁的功能,您可以使用@property装饰器来装饰类方法,这使得该方法显示为静态值成员而不是可调用成员。例如,这个:

class A(object):

    def my_method(self):
        return "I am a return value."

    @property
    def my_property(self):
        return "I am also a return value."

会导致以下行为:

>>> a = A()
>>> a.my_method()
'I am a return value.'
>>> a.my_property
'I am also a return value.'

最后,我的问题是:是否有任何内置语法在ES6类中提供类似的行为?我还不是文档专家(但是)到目前为止我没有看到任何提供此类功能的内容。

2 个答案:

答案 0 :(得分:6)

是的,它被称为getter.

class A {
  my_method() {
    return "I am a return value.";
  }

  get my_property() {
    return "I am also a return value.";
  }
}

答案 1 :(得分:0)

要尝试正确封装,请使用私有变量(带有 elseif ($vhdrename -match 'disk[-_]_?4') { $vhdname = "$newname-datadisk04" Write-Host "VM name is"$vhdname -ForegroundColor Yellow } elseif ($vhdrename -match 'disk[-_]-4') { $vhdname = "$newname-datadisk04" Write-Host "VM name is"$vhdname -ForegroundColor red } 前缀 - 注意作为约定,我使用 'disk[-_]\-4' 表示私有,__ 表示受保护)并将您的私有变量与公共(getter)变量:

__

然后在代码中的某个点...

_