问题标签 [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.
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 的示例,它还演示了(在简化的测试用例中它应该如何工作:
- “工作”示例使用
static
:https ://jsbin.com/koruba/2/edit?js,console - “非工作”示例未使用
static
:https ://jsbin.com/koruba/3/edit?js,console
问题是:不管单例/pubsub 存储是否更好,static
在Filters
超类中使用 是否有效?特别是该static set data (newData) {}
方法,因为它实际上可以访问this._data
,并且我被告知对于任何方法,static
我都不能访问该立即函数之外的任何内容,并且由于this._data
不作为参数传递给该方法,因此我不应该static
在此处使用。
javascript - 在 Firefox 中使用 eval 方法从字符串中获取类
我尝试了什么(适用于 chrome)
在 Firefox 46 中引发以下错误:
a
未定义并使用new A()
返回ReferenceError: A is not defined
。
Firefox 有什么不同?
javascript - 获取类中的所有静态 getter
假设我有这个类(我像枚举一样使用它):
有什么类似于Object.keys
得到的['Red', 'Black']
吗?
我正在使用 Node.js v6.5.0,这意味着可能缺少某些功能。
javascript - 在 es6 类中为 Angular 1.5 控制器定义常量
我正在努力让它发挥作用。我知道静态变量不能在 ES 6 格式的类中声明。如何在类中声明常量并在类本身中访问它
这就是我所拥有的。我正在尝试访问 $onINit 时常量的构造函数值。我确实看到 this.constructor.Consts 具有正确的值。但是,当我尝试使用 this.getActionConsts.A 访问它们时,它不存在。
有什么线索吗?
或者有没有更好的方法来定义常量
javascript - 无法将方法添加到 Array 子类
我正在尝试使用下面的代码对 Array 对象进行子类化。如果您在浏览器中运行代码,它可以正常工作。但是,如果我将此代码放在一个 .js 文件中,并在该文件中包含一个<script>
标记,则该.add()
方法是未定义的。
当我加载页面时,.add()
未定义。但是当我将完全相同的代码复制粘贴到控制台时,它就可以工作了。
这是怎么回事?
更新 我也在使用 Babel.js (v6.x) 进行编译,结果证明这是问题所在,正如 Fuechter 在他的回答中解释的那样。
reactjs - 在 ES6 的子组件中在哪里格式化和映射这个数组?
所以我从父组件那里得到一个道具。假设该属性具有如下数据结构: [{a: "a", b:"b"}, {c:"c", d:"d"}...]
这是获得这个道具的组件。
现在,在我在子组件中渲染它之前,我想将它映射到其他类似的东西
最终的结果是。
javascript - es6 classes:父类中的fetch,参考子类中的resolved fetch
假设我有这些数据spanish.json
:
我有一个 Dictionary 类来加载它并添加一个搜索方法:
我可以实例化它,并使用它通过这个小单页应用程序查找“调用”:
到目前为止,一切都很好。但是,假设我想要子类Dictionary
化并添加一个计算所有单词并将该计数添加到页面的方法。(伙计,我需要一些投资者。)
因此,我获得了另一轮资金并实施CountingDictionary
:
新的单页应用程序:
当此页面加载时,h1
将填充0
.
我知道我的问题是什么,我只是不知道如何解决它。
问题是fetch
调用返回 a Promise
,并且.entries
只有在 Promise 返回后,该属性才会填充来自 URL 的数据。在那之前,
.entries
仍然是空的。
我怎样才能.countEntries
等待 fetch 承诺解决?
还是有更好的方法来完全实现我想要的?
javascript - 节点:使用“类”语法的原型不显示预期对象
在 JS 中,如果我使用构造函数创建一个新对象,并访问原型对象,我可以看到原型具有的任何属性。(在代码中会更清楚):
在这里一切都很好。
现在,我将使用类语法来创建相同的场景
结果C {}
让我很困惑。我的属性在哪里?foo
它不在c
对象中,但似乎不在我的C
原型中!
javascript - 在类内的函数内创建函数
假设我有一些类,里面有一些功能:
在这种情况下,我可以调用someClass.someFunction(someObj)
,它会返回[object Object]
。在尝试调用someClass.someFunction(someObj).anotherFunction()
时,它会出现一个TypeError: someClass.someFunction(...).anotherFunction is not a function
.
我怎么能绕过这个?我尝试创建一个类似的原型someClass.prototype.someFunction.anotherFunction = function() {...}
,但这不起作用。
非常感谢,@Medallon。
istanbul - 伊斯坦布尔分支覆盖率是 ES6 类应该是 100% 但只有 75%
我写了一个非常简单的类和一些单元测试。覆盖率报告应该是 100%,但我看到分支是 75%。
我不知道如何达到 100% 以及我应该去哪里了解我缺少什么。
更新
单元测试:
我正在使用 Babel.js 将此代码从 ES6 转换为 ES5。
要运行单元测试,我使用以下命令:
开玩笑 ./src/ -u
所有代码都可以在 Github 上找到:https ://github.com/gyroscopeo/generic-dice/tree/feature/35-vanilla