什么是Javascript(ES6)中'静态获取'的含义?

时间:2017-03-19 09:03:35

标签: javascript ecmascript-6

我现在需要在Javascript

中表达这样的表达式的含义
static get is() { return "custom-element"; }

我猜static可能有类似于Java或C ++的行为,但我需要有关这些语法的更多信息。

1 个答案:

答案 0 :(得分:20)

你是对的。它们与任何其他面向对象的编程语言(如C ++和Java) 非常接近

一切都记录在案。这是您正在查看的静态方法,对于要获取的属性或对象,get是getter

如果你看explore static

  

静态方法。静态属性(或类属性)是Foo本身的属性。如果使用static为方法定义添加前缀,则可以创建类方法:

> typeof Foo.staticMethod
'function'
> Foo.staticMethod()
'classy'

静态 属性:

我现在无法想到一个很好的例子,而不是在我的头脑中给出的一个很好的例子。在这里,我正在粘贴必不可少的部分。

class Point {
    constructor(x, y) {
        this.x = x;
        this.y = y;
    }
}

Point.ZERO = new Point(0, 0);

您可以使用Object.defineProperty()来创建只读属性,但我喜欢赋值的简单性。

其次,您可以创建静态getter:

class Point {
    constructor(x, y) {
        this.x = x;
        this.y = y;
    }
    static get ZERO() {
        return new Point(0, 0);
    }
}

在这两种情况下,您都可以获得可以阅读的属性Point.ZERO。在第一种情况下,每次都返回相同的实例。在第二种情况下,每次都返回一个新实例。