问题标签 [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.
javascript - 访问超类上的类字段
我有一个包含以下代码的文件:
注意:尝试运行上面的代码段可能行不通,因为我不知道如何让它使用我的 Babal 设置。
无论如何,当我使用 Babel 编译它并在 Node 中运行它时,我收到以下错误:
我正在使用带有stage-2
预设的 Babel 6.26.0 和 Node 8.11.1。如果有人关心,我可以显示我正在使用的命令。
为什么会这样?我猜这super
不能用于访问类字段,但是我应该怎么做呢?如果我将 的doSomething
方法更改Animal
为传统方法 ( doSomething() { return 'Hi.'; }
),它会起作用,但我宁愿避免使用传统方法,因为它们重新定义的方式this
以及它引起的所有混乱。
有没有办法访问超类的类字段?
javascript - 异步函数可以在类字段中吗?
考虑以下代码段:
工作得很好。但是,如果函数改为异步,则没有其他更改:
这会导致语法错误。无论是否使用箭头函数,它都会发生:
我的语法是否不正确,或者类字段中只是禁止了异步函数?
(当然,原型上的普通异步方法也是可能的,但我在问类字段中的异步函数为什么/如何工作)
接受评论的建议async method() => {
也不起作用:
javascript - 类方法与类字段函数与类字段箭头函数有什么区别?
类方法,作为函数的类属性和作为箭头函数的类属性有什么区别?this
关键字在方法的不同变体中的行为是否不同?
这是从 TypeScript 转译时生成的 JavaScript。
我的 TypeScript 版本是 3.4.5。
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 中)
谢谢
javascript - JavaScript 中的“类字段”是什么?
我正在阅读有关 JavaScript 类的内容,并遇到了“公共类字段语法”这个术语。在深入研究它时,我遇到了这个Babel 的关于类属性的文档。
有人可以解释一下 -实现方面这种新语法的用例是什么? (它为 JavaScript 提供了哪些解决方案/好处,到目前为止还没有这些解决方案/好处?)
下面是一个示例(在 Google Chrome 中运行没有错误):
javascript - 如何在 nodejs 12 中使用私有类字段?
在nodejs的当前版本中, 即 12.x.x
,我们可以通过符号声明private
类字段。#some_varible
该#
符号将使该特定类的变量私有字段。
我有以下问题:
- 如何使用这个变量?
- 在生产应用程序中使用此类符号来声明私有类字段是否安全?
- 当某些类字段被声明为私有时,它如何在后台(在 nodejs 中)工作?
javascript - 我可以使用变量作为标识符来设置私有类字段吗?如何?
Node.js 12 支持由# out-of-the-box 表示的私有类字段,没有标志或转译器。
例如,这适用于 Node.js 12:
假设我想用 20 而不是 1 个属性来构造我的 Foo 实例——我必须将构造函数和 getter 函数中的赋值语句复制 20 次,这会产生很多样板代码。
如果我不使用私有字段而是使用常规类字段,这不难避免:
但是,对于私有类字段,它不起作用:
我还尝试使用Reflect.set为构造函数中的私有类字段赋值,但无济于事:
我可以使用变量作为标识符来设置私有类字段吗?如果是,如何?
javascript - 如何枚举私有 JavaScript 类字段
我们如何枚举私有类字段?