问题标签 [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 投票
0 回答
29 浏览

javascript - 符号和局部变量名不能相同?

在 ES6 中全局符号和局部变量是冲突的。这里是代码

为什么会这样?这是一个错误吗?

0 投票
1 回答
1039 浏览

angularjs - 如何通过在 ES6 类中模拟角度控制器来对自定义 $filter 进行单元测试

我有一个为角度控制器编写的 ES 类,我正在尝试使用 angular-mock 编写茉莉花测试。

在构造函数中,我将 $filter 初始化为 this.i18n = $filter('i18n),它基本上是一个本地化过滤器,它接受一个键、值并返回键的本地化值。

我的问题是,由于类的构造函数具有 $filter 并且稍后在类方法中使用。我的单元测试失败了。我如何使用 $filter 进行测试,以使我的测试不会失败。我正在寻找模拟自定义过滤器

这是我得到的例外

这是 ES6 类

这是我拥有的单元测试

问题是它运行测试但由于无法使用 this.i18n = $filter('i18n) 初始化而失败。我应该如何初始化测试以将 $filter 传递给测试?我可以模拟过滤器吗,因为我真的不想在这里测试过滤器

0 投票
1 回答
4222 浏览

javascript - 如何获取es6类实例的所有功能

例如,我有一些带有一些方法的类:

我可以得到这个类实例的所有函数名吗?

给了我一个空数组。

我想得到像['someMethod1', 'someMethod2'].

0 投票
3 回答
1109 浏览

javascript - JavaScript中的自定义类数组getter

我有一个简单的 ES6 类,如下所示:

我想让它使 Ring 对象的索引换行,以便new Ring(1, 2, 3)[3]返回 1,new Ring(1, 2, 3)[-1]返回 3,依此类推。这在 ES6 中可能吗?如果是这样,我将如何实施它?

我读过代理,它允许完全自定义的getter,但我不知道如何将代理应用于类。我确实做到了:

myRing现在是一个支持包装索引的 Ring 对象。问题是我每次都必须像这样定义 Ring 对象。有没有办法将此代理应用于类,以便调用new Ring()返回它?

0 投票
3 回答
171 浏览

javascript - ES6 - 将类原型附加到单例

我想知道将“新”类附加到现有实例的最佳方法是什么。

例如:我有一个“worker”类,它需要“扩展”到现有的 IPC 类实例,因此它可以通过 ipc 通道进行通信。

然后我可以像这样使用它:

这是不好的做法,因为它会降低性能.. https://developer.mozilla.org/nl/docs/Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf

在这种情况下,“发送”方法将被调用数百万次。

所以在这样的用例中,你会推荐什么?

我还可以在 Worker 实例中再次创建每个函数,然后在该方法中调用 ipc.func() ,但这也感觉像是一种反模式。

谢谢

澄清:

我有一个“主机”工作人员(主)..它有一个已经初始化的 IPC(节点-ipc)实例..

每当我创建一个工人“孩子”时,我想使用(已经存在的)父 IPC 实例来连接到子工人..

所以真的很好,当我创建一个新的 Worker({ipc:ipc}) 时,我可以将 worker.prototype 附加到 IPC 实例。因此我可以只做 worker.send() 和 IPC 实例知道它来自 main->child 频道..

0 投票
0 回答
663 浏览

angularjs - ES6 和 Angular 使用来自控制器的单独文件中的 Factory

在我的控制器 MyController 中使用 ES6 我发出一个 http 请求来检索 webapi json 数据.. 工作得很好,直到..

我想接听这个电话并将它放在这个控制器文件之外的服务或工厂文件中。我不能这样做..有人可以指导我吗?

我有一个应用程序文件,可以导入我的控制器和其他类似的组件

我试图像这样创建一个工厂:

从我的控制器我尝试调用它:

我试图将该类导入我的应用程序,然后导入我的控制器文件.. 没有工作。

此时的错误是:Error: _factory.myFactory is not a constructor

0 投票
1 回答
164 浏览

javascript - 这在 devtools 中是未定义的,即使这不是未定义的

这在控制台中未定义 “this”在 devtool 控制台中是未定义的,而它显然不是未定义的。一定是开发工具中的错误?

0 投票
2 回答
2670 浏览

javascript - Calling function from a function in javascript es6

I'm using es6 javascript with babel and trying to make an ajax call using xhr using two function but getting an error Uncaught TypeError: this.post is not a function

What is the correct syntax to make a call to a function from another function defined in the same class in es6 javascript?

Thanks for your answer this is my code

Edit1: This is how I call login function / also passed data to xhr request above

0 投票
2 回答
6484 浏览

javascript - 初始化一个空的 ES6 类

我正在构建一个应用程序,其中有一个 View,它是一个类,它需要一堆属性来显示、创建、更新等。

我这样设置我的视图

我希望能够View在创建新视图时初始化 a,我认为正确的方法是这样的

let newView = new View()

不幸的是,如果我这样做,似乎不会调用构造函数。当我运行这个测试

expect(newView.id).toBe(undefined)

我得到一个错误cannot read property id of undefined

let newView = new View({})

返回正确,但我觉得提供一个空对象有点奇怪。这个对吗?有没有更好的方法来实例化一个空类?

0 投票
1 回答
84 浏览

inheritance - 使用 super() 反应子类化模式

在反应路由器教程的活动链接部分,他们建议以下使用活动链接。

您网站中的大多数链接不需要知道它们是活动的,通常只需要知道主要导航链接。包装它们很有用,这样您就不必记住您的 activeClassName 或 activeStyle 无处不在。

我们将在这里使用扩展运算符,即三个点。它克隆了我们的 props,在这个用例中,它将 activeClassName 克隆到我们想要的组件中,以便我们从中受益。

在 modules/NavLink.js 创建一个新文件,如下所示:

我很想知道是否有一种方法可以使以下模式起作用: