当前位置: 首页 > 知识库问答 >
问题:

在类方法之外声明类属性

姬熙云
2023-03-14
class Point {
  constructor(x, y) {
    this.x = x;
    this.y = y;
  }
  toString() {
    return '(' + this.x + ', ' + this.y + ')';
  }
}
class Point {
  // Declare static class property here
  // a: 22
  constructor(x, y) {
    this.x = x;
    this.y = y;
  }
  toString() {
    return '(' + this.x + ', ' + this.y + ')';
  }
}

共有1个答案

冉昊
2023-03-14

在ES6中直接在类上初始化属性是不可能的,当前只能以这种方式声明方法。ES7中也有同样的规则。

然而,它是一个提议的特性,可能会在ES7之后出现(目前处于阶段3)。这是官方的建议。

此外,该提案建议的语法略有不同(=而不是:):

class Point {
  // Declare class property
  a = 22
  // Declare class static property
  static b = 33
}
class Point {
  // ...
}

// Declare class property
Point.prototype.a = 22;

// Declare class static property
Point.b = 33;

正如Bergi在评论中提到的,建议的语法:

class Point {
  // Declare class property
  a = 22
}

只是语法上的糖,为这段代码提供了一个快捷方式:

class Point {
  constructor() {
    this.a = 22;
  }
}

其中这两个语句都将属性分配给实例。

class Point {
  constructor() {
    this.a = 22;  // this becomes a property directly on the instance
  }
}

Point.prototype.b = 33; // this becomes a property on the prototype
var point = new Point();
p.a // 22
p.b // 33
 类似资料:
  • 在阅读了诸如sfinae关于在类主体之外定义的成员函数(这不是同一个问题)等问题之后,我仍然没有找到在使用sfinae方法仅使用算术类型启用类时在类声明之外定义成员函数主体的好方法。 在本例中,我得到错误:

  • 我最近盯着Kotlin看,有Java的经验。在Java中,我们可以声明与在parent中同名的字段。当我在中这样做时,它给出错误的成员。我错过了什么?

  • 问题内容: 在阅读有关Java的书时,我看到了一个这样编写的示例。我想知道我可以在main方法之外声明变量吗?在main方法外部和内部声明变量之间有什么区别?“静态”在这里的作用是什么?请有人给我解释一下吗?我是Java新手。 最好的祝福。 问题答案: 1)内部与外部: 如果 在 方法 内部 声明对象,则该对象仅在该方法中可见。基本上,如果在其周围放置方括号,则只能从这些方括号内看到/访问它。 如

  • 问题内容: 我可以在类定义之外创建,甚至可以在另一个模块中创建吗? 问题答案: 是。您可以在类外部定义函数,然后在类主体中将其用作方法: 您也可以在定义一个函数后将其添加到类中: 您可以根据需要在不同的模块中定义函数和类,但是我建议不要在一个模块中定义该类,然后再将其导入另一个模块中并向其中动态添加方法(如第二个示例),因为那样的话d根据是否已导入另一个模块,其行为与类具有令人惊讶的不同。 我要指

  • 问题内容: 在什么情况下可能会得出与之不同的结果? 我认为这可能与外部类的子类实例化一个未声明为静态的内部类有关,但我无法以这种方式获得区别: 输出: 问题答案: 在此处找到http://kickjava.com/1139.htm#ixzz1mv2nEWg7: “具有getDeclaringClass的替代项是,在Java语言规范中,匿名内部类不计为类的成员,而命名内部类为。因此,此方法为匿名类返

  • 我试图在react类中实现datepicker,在这个过程中,我在react类中声明了const,我正在处理这个类,并且得到了解析错误。有人能帮个忙吗申报有什么问题吗? 我得到下面的错误。 未能编译/src/组件/类别。js行11:9:解析错误:意外标记 9 |类别类别。组件{10| 11|const date=useState(new Date()); | ^ 12| 13|构造函数(props