问题标签 [es6-class]

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 回答
3816 浏览

javascript - 在 ES6 类的静态设置器中访问类数据

我正在尝试实现以下目标:将来自子类的数据存储在超类中。

以下示例在实践中确实有效,但有人告诉我,static get|set x() {}在下面的示例中使用的方法不正确,因为该setter方法使用的方法this._data超出了直接函数的上下文,即没有作为参数传递给函数,并且作为这样二传手不再是静态的。

例子:

我在这里想要实现的是拥有一个位于多个其他子类基础的超类,这些子类可以将它们的数据存储在超类中,然后在数据发生变化时发出 PubSub 通知并能够发送完整的数据对象包含由具有该 PubSub 事件的所有子类存储的所有数据。

如果我的 setter/getterbase.js不是static,我遇到的问题是a.js只会跟踪a.js's 的数据而不知道b.js's 的数据。

如果这确实是静态 getter/setter 访问器的无效用例,我可能不得不将数据存储功能拆分为一个单独的单例,该单例跟踪数据并且是所有子类的依赖项。不是世界末日,但由于这个“有效”,我想更多地了解静态 getter 和 setter 的用例。

谢谢参观。


更新:这是作为 JS Fiddle 的示例,它还演示了(在简化的测试用例中它应该如何工作:

问题是:不管单例/pubsub 存储是否更好,staticFilters超类中使用 是否有效?特别是该static set data (newData) {}方法,因为它实际上可以访问this._data,并且我被告知对于任何方法,static我都不能访问该立即函数之外的任何内容,并且由于this._data不作为参数传递给该方法,因此我不应该static在此处使用。

0 投票
2 回答
3738 浏览

javascript - 在 Firefox 中使用 eval 方法从字符串中获取类

我尝试了什么(适用于 chrome)

在 Firefox 46 中引发以下错误:

a未定义并使用new A()返回ReferenceError: A is not defined

Firefox 有什么不同?

0 投票
1 回答
6223 浏览

javascript - 获取类中的所有静态 getter

假设我有这个类(我像枚举一样使用它):

有什么类似于Object.keys得到的['Red', 'Black']吗?

我正在使用 Node.js v6.5.0,这意味着可能缺少某些功能。

0 投票
1 回答
909 浏览

javascript - 在 es6 类中为 Angular 1.5 控制器定义常量

我正在努力让它发挥作用。我知道静态变量不能在 ES 6 格式的类中声明。如何在类中声明常量并在类本身中访问它

这就是我所拥有的。我正在尝试访问 $onINit 时常量的构造函数值。我确实看到 this.constructor.Consts 具有正确的值。但是,当我尝试使用 this.getActionConsts.A 访问它们时,它不存在。

有什么线索吗?

或者有没有更好的方法来定义常量

0 投票
1 回答
58 浏览

javascript - 无法将方法添加到 Array 子类

我正在尝试使用下面的代码对 Array 对象进行子类化。如果您在浏览器中运行代码,它可以正常工作。但是,如果我将此代码放在一个 .js 文件中,并在该文件中包含一个<script>标记,则该.add()方法是未定义的。

当我加载页面时,.add()未定义。但是当我将完全相同的代码复制粘贴到控制台时,它就可以工作了。

这是怎么回事?

更新 我也在使用 Babel.js (v6.x) 进行编译,结果证明这是问题所在,正如 Fuechter 在他的回答中解释的那样。

0 投票
1 回答
254 浏览

reactjs - 在 ES6 的子组件中在哪里格式化和映射这个数组?

所以我从父组件那里得到一个道具。假设该属性具有如下数据结构: [{a: "a", b:"b"}, {c:"c", d:"d"}...]

这是获得这个道具的组件。

现在,在我在子组件中渲染它之前,我想将它映射到其他类似的东西

最终的结果是。

0 投票
3 回答
5148 浏览

javascript - es6 classes:父类中的fetch,参考子类中的resolved fetch

假设我有这些数据spanish.json

我有一个 Dictionary 类来加载它并添加一个搜索方法:

我可以实例化它,并使用它通过这个小单页应用程序查找“调用”:

到目前为止,一切都很好。但是,假设我想要子类Dictionary 化并添加一个计算所有单词并将该计数添加到页面的方法。(伙计,我需要一些投资者。)

因此,我获得了另一轮资金并实施CountingDictionary

新的单页应用程序:

当此页面加载时,h1将填充0.

我知道我的问题是什么,我只是不知道如何解决它。

问题是fetch调用返回 a Promise,并且.entries只有在 Promise 返回后,该属性才会填充来自 URL 的数据。在那之前, .entries仍然是空的。

我怎样才能.countEntries等待 fetch 承诺解决?

还是有更好的方法来完全实现我想要的?

0 投票
1 回答
39 浏览

javascript - 节点:使用“类”语法的原型不显示预期对象

在 JS 中,如果我使用构造函数创建一个新对象,并访问原型对象,我可以看到原型具有的任何属性。(在代码中会更清楚):

在这里一切都很好。

现在,我将使用语法来创建相同的场景

结果C {}让我很困惑。我的属性在哪里?foo它不在c对象中,但似乎不在我的C原型中!

0 投票
2 回答
124 浏览

javascript - 在类内的函数内创建函数

假设我有一些类,里面有一些功能:

在这种情况下,我可以调用someClass.someFunction(someObj),它会返回[object Object]。在尝试调用someClass.someFunction(someObj).anotherFunction()时,它会出现一个TypeError: someClass.someFunction(...).anotherFunction is not a function.

我怎么能绕过这个?我尝试创建一个类似的原型someClass.prototype.someFunction.anotherFunction = function() {...},但这不起作用。

非常感谢,@Medallon。

0 投票
2 回答
2916 浏览

istanbul - 伊斯坦布尔分支覆盖率是 ES6 类应该是 100% 但只有 75%

我写了一个非常简单的类和一些单元测试。覆盖率报告应该是 100%,但我看到分支是 75%。

在此处输入图像描述

我不知道如何达到 100% 以及我应该去哪里了解我缺少什么。

更新

单元测试:

我正在使用 Babel.js 将此代码从 ES6 转换为 ES5。

要运行单元测试,我使用以下命令:

开玩笑 ./src/ -u

所有代码都可以在 Github 上找到:https ://github.com/gyroscopeo/generic-dice/tree/feature/35-vanilla