问题标签 [ecmascript-next]

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

javascript - React 类中的属性初始化器?

我已经开始看到这种模式弹出:

起初我认为这是无效的,直到我查了一下才发现它是 ES7。这是一种安全的(即面向未来的)语法吗?我问是因为我意识到并非 ES6 和 ES7 中的所有语法都被批准,许多只是简单地提出来的。我确实比我一直使用的更喜欢这个:

0 投票
1 回答
842 浏览

javascript - 在构造函数之外实例化的 ES6+ 实例属性

在 React/React-Native 中使用 ES6+ 语法foo,当在构造函数之外定义的变量 被调用时,会以某种方式转换为实例变量this.。我的断言是真的吗?为什么它甚至可以工作,而不是在构造函数中实例化?这里有一个对应的 React Native 代码片段:


这个关于 ES7 属性初始化器的讨论展示了如何state在 React/React Native 中以这种方式突出使用变量。

到目前为止,我在这里这里阅读的相关 Stack Overflow 讨论无法为我回答这个问题。

0 投票
1 回答
5881 浏览

javascript - 解构扩展导入 ES6

似乎抛出了一个 linting 错误。为什么不能在 ES6 导入语句上“传播”?

0 投票
0 回答
33 浏览

javascript - 绑定提案:绑定多个参数

有一个提案介绍了一种新的绑定方式。你可以做例如

但是如果doIt需要一个或多个参数怎么办,我怎么能绑定这些呢?

立即执行该功能。有没有办法做到这一点?

0 投票
8 回答
52455 浏览

javascript - async/await 和 ES6 生成器之间的区别

我刚刚阅读了这篇精彩的文章 « Generators »,它清楚地强调了这个函数,它是一个用于处理生成器函数的辅助函数:

我假设或多或少是使用/async实现关键字的方式。asyncawaitawait所以问题是,如果是这样的话,那么关键字和关键字之间到底有什么区别yieldawait总是把某事变成一个承诺,而yield没有做出这样的保证吗?这是我最好的猜测!

您还可以在本文中看到async/与生成器的await相似之处,他在其中描述了“生成”函数ES7 异步函数yield

0 投票
6 回答
7052 浏览

javascript - 如何使用 Array.prototype.filter 过滤对象?

给定

arr我们可以使用Number构造函数过滤数组中的数字项

true[10]预期的结果数组?如果我们替换falsetruearr

使用Array.isArray

String

如果我们想过滤其中的项目arr是对象,在索引处47我们尝试

虽然我们更喜欢简单地调用arr.filter(Object),但我们可以传递一个函数调用;尝试不同的属性,Object以便我们最终找到可以用作函数或构造函数的属性或方法,以作为模式传递给以arr.filter(/* method, constructor, other approach */)返回匹配对象的过滤结果,甚至是输入中对象的属性名称或值大批。

我们开始,天真地,通过检查数组中的项目是否constructor具有name等于"Object"

虽然当我们向arr;添加一个对象时 例如;

c prototypeconstructor现在一样undefined。尽管我们确信这不会返回预期的结果

至少没有返回错误;让我们继续

返回预期的结果;虽然我们正在尝试使用

  1. 过滤数组Object{}对象;即使对象没有定义的原型或构造函数;可选地将JSON字符串转换"{"abc":123}"为对象;虽然我们还没有走到这一步;

  2. 将属性名称传递给用作属性名称或对象值的.filter(callback, this)模式;this或利用一种方法使用 filter.bind.call.apply其他方法从输入数组中过滤对象-不使用完整的

    .filter(function(prop, value) {})

    图案。我们如何将Object.hasOwnProperty()调用强制转换为类似于

    .filter(Object.hasOwnProperty, "abc")

?

提到.call,在搜索了一个类似的Question并找到.bindJS Array.prototype.filter onprototype方法之后。尽管不确定如何实现在过滤对象和具有上述特定属性的对象中描述的方法。.apply

请注意,问题也可以通过destructuring或其他方法解决es-6es-7与 相比,提供可比较甚至更严格的结果.filter()。也就是说,.filter()不使用

图案。返回对象;即Object, {}; 和按属性过滤的对象;按属性值过滤的对象。


问题:

  1. 如何在不使用匿名函数模式的情况下过滤Object传递给的数组中带有或不带有原型或构造函数的对象?Array.prototype.filter()callback

  2. Array.prototype.filter()如何在不使用匿名函数模式的情况下通过传递属性名称或值来过滤传递给的数组中的特定对象以匹配对象callback

0 投票
2 回答
562 浏览

javascript - 在 ES2015 中如何确保所有方法都等待对象初始化?使用 ES7 装饰器?

我有一个连接到远程服务的 ES2015 类。

问题是我的代码在它的对象完成连接到远程服务器之前尝试访问这个类。

如果对象尚未完成初始化,我想确保方法不只是给出错误。

我的类中有很多方法依赖于连接的启动和运行,所以如果有一个单一的、易于理解的机制可以应用于所有方法,比如@ensureConnected 装饰器,那就太好了。

在这里摆弄:https ://jsfiddle.net/mct6ss19/2/

我正在使用 ES7 装饰器进行成像以执行测试以查看连接是否已建立,但我不知道如何执行此操作。

0 投票
1 回答
6976 浏览

javascript - 带有 React 组件的装饰器

@myDecorator我对使用语法(使用 babel)的能力感到非常兴奋。我正在尝试装饰其中一个生命周期功能,具体来说componentWillMount,并检查装饰器中组件的propsand context。但是,我似乎无法访问propscontext。我不确定这是否是一种反模式,或者我是否只是在解决这个问题。

小例子:

我也尝试过装饰器和检查的箭头函数this,但我不认为装饰器组合的东西是这样工作的。

我还尝试将我的装饰器设为工厂并传入,this.propsthis.contextthis装饰组件生命周期函数时未定义。

0 投票
4 回答
23371 浏览

javascript - 可以在构造函数中使用 async/await 吗?

正如问题所述。我是否可以这样做:

0 投票
2 回答
89 浏览

javascript - 在声明之前未定义属性初始化器

我正在尝试使用属性初始化程序将箭头函数用作类的方法。但是在声明方法之前,它们是不可访问的。如果我更改声明它们的顺序,它会起作用。

是预期的行为还是 babel 转译

下面的 url 是一个 babel repl 实例,我想演示的代码请参考它。

https://babeljs.io/repl/#?evaluate=true&presets=es2015%2Creact%2Cstage-0%2Cstage-2&experimental=false&loose=false&spec=false&code=class%20SampleClass1%20%7B%0A%20%20method2%20% 3D%20this.method1()%3B%0A%20%20method1()%20%7B%0A%20%20%20%20return%20%22works%22%3B%0A%20%20%7D%0A% 7D%0A%0Aconsole.log(%22(new%20SampleClass1()).method2%22)%3B%0Aconsole.log((new%20SampleClass1()).method2)%3B%0A%0Aclass%20SampleClass2%20% 7B%0A%20%20method2%20%3D%20this.method1()%3B%0A%20%20method1%20%3D%20()%20%3D%3E%20%7B%0A%20%20% 20%20return%20%22works%22%3B%0A%20%20%7D%0A%7D%0A%0Aconsole.log(%22(new%20SampleClass2()).method2%22)%3B%0Aconsole.log ((new%20SampleClass2()).method2)%3B