问题标签 [class-fields]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
170 浏览

javascript - 访问超类上的类字段

我有一个包含以下代码的文件:

注意:尝试运行上面的代码段可能行不通,因为我不知道如何让它使用我的 Babal 设置。

无论如何,当我使用 Babel 编译它并在 Node 中运行它时,我收到以下错误:

我正在使用带有stage-2预设的 Babel 6.26.0 和 Node 8.11.1。如果有人关心,我可以显示我正在使用的命令。

为什么会这样?我猜这super不能用于访问类字段,但是我应该怎么做呢?如果我将 的doSomething方法更改Animal为传统方法 ( doSomething() { return 'Hi.'; }),它会起作用,但我宁愿避免使用传统方法,因为它们重新定义的方式this以及它引起的所有混乱。

有没有办法访问超类的类字段?

0 投票
3 回答
140 浏览

javascript - 异步函数可以在类字段中吗?

考虑以下代码段:

工作得很好。但是,如果函数改为异步,则没有其他更改:

这会导致语法错误。无论是否使用箭头函数,它都会发生:

我的语法是否不正确,或者类字段中只是禁止了异步函数?

(当然,原型上的普通异步方法也是可能的,但我在问类字段中的异步函数为什么/如何工作)

接受评论的建议async method() => {也不起作用:

0 投票
1 回答
1344 浏览

javascript - Javascript中的类字段和属性有什么区别

我正在阅读JavaScript 的类字段提案。我不明白为什么作者称它为“字段”而不是属性。

类文章中的 MDN 文档讨论了在构造函数中声明的实例属性,并在下一节中讨论了使用新语法 声明的字段声明。

除了语法之外,两者之间有什么区别?

0 投票
2 回答
3916 浏览

javascript - 类方法与类字段函数与类字段箭头函数有什么区别?

类方法,作为函数的类属性和作为箭头函数的类属性有什么区别?this关键字在方法的不同变体中的行为是否不同?

这是从 TypeScript 转译时生成的 JavaScript。

我的 TypeScript 版本是 3.4.5。

0 投票
1 回答
55 浏览

javascript - JS 类:ES6 myFunc(){..} 和 ES5 myFunc = function() {...} 在类声明中的区别

在下面的代码中,

read = function() { console.log('I am reading') }成为新创建实例的属性,即

p1.hasOwnProperty('read')true

而不是speak() { console.log('I am speaking'); }被分配到PersonClass.prototype. IE

p1.hasOwnProperty('speak')False

p1.__proto__.hasOwnProperty('speak')true

有人可以解释为什么会发生这种情况。

本质上,类中两种方法声明方式之间的区别是什么。

我认为speak() {...}只是更短的语法speak = function() {...}(在 ES6 中)

谢谢

0 投票
3 回答
11555 浏览

javascript - JavaScript 中的“类字段”是什么?

我正在阅读有关 JavaScript 类的内容,并遇到了“公共类字段语法”这个术语。在深入研究它时,我遇到了这个Babel 的关于类属性的文档

有人可以解释一下 -实现方面这种新语法的用例是什么? (它为 JavaScript 提供了哪些解决方案/好处,到目前为止还没有这些解决方案/好处?)

下面是一个示例(在 Google Chrome 中运行没有错误)

0 投票
1 回答
5320 浏览

javascript - 如何在 nodejs 12 中使用私有类字段?

nodejs的当前版本中, 12.x.x,我们可以通过符号声明private类字段。#some_varible#符号将使该特定类的变量私有字段。

我有以下问题:

  • 如何使用这个变量?
  • 在生产应用程序中使用此类符号来声明私有类字段是否安全?
  • 当某些类字段被声明为私有时,它如何在后台(在 nodejs 中)工作?
0 投票
1 回答
109 浏览

javascript - 我可以使用变量作为标识符来设置私有类字段吗?如何?

Node.js 12 支持由# out-of-the-box 表示的私有类字段,没有标志或转译器。

例如,这适用于 Node.js 12:

假设我想用 20 而不是 1 个属性来构造我的 Foo 实例——我必须将构造函数和 getter 函数中的赋值语句复制 20 次,这会产生很多样板代码。

如果我不使用私有字段而是使用常规类字段,这不难避免:

但是,对于私有类字段,它不起作用:

我还尝试使用Reflect.set为构造函数中的私有类字段赋值,但无济于事:

我可以使用变量作为标识符来设置私有类字段吗?如果是,如何?

0 投票
2 回答
319 浏览

javascript - 如何枚举私有 JavaScript 类字段

我们如何枚举私有类字段?

0 投票
2 回答
9260 浏览

typescript - TypeScript 中的 private 关键字和 private 字段有什么区别?

private在 TypeScript 3.8+ 中,使用关键字将成员标记为私有有什么区别:

并使用为 JavaScript 提议#的私有字段:

我应该更喜欢一个吗?