标签: ecmascript-6

JavaScript ES6类中的私有属性

是否可以在ES6类中创建私有属性?

这是一个例子.我怎样才能阻止访问instance.property

class Something {
  constructor(){
    this.property = "test";
  }
}

var instance = new Something();
console.log(instance.property); //=> "test"
Run Code Online (Sandbox Code Playgroud)

javascript class private-members ecmascript-6 es2015

410
推荐指数
17
解决办法
22万
查看次数

多个箭头函数在javascript中意味着什么?

我一直在阅读一堆react代码,我看到这样的东西,我不明白:

handleChange = field => e => {
  e.preventDefault();
  /// Do something here
}
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6 arrow-functions

401
推荐指数
6
解决办法
7万
查看次数

Node.js - SyntaxError:意外的令牌导入

我不明白出了什么问题.节点v5.6.0 NPM v3.10.6

代码:

function (exports, require, module, __filename, __dirname) {
    import express from 'express'
};
Run Code Online (Sandbox Code Playgroud)

错误:

SyntaxError: Unexpected token import
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:387:25)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Function.Module.runMain (module.js:447:10)
    at startup (node.js:140:18)
    at node.js:1001:3
Run Code Online (Sandbox Code Playgroud)

javascript node.js npm ecmascript-6

388
推荐指数
11
解决办法
52万
查看次数

我什么时候应该在ECMAScript 6中使用箭头功能?

这个问题针对的是那些在即将到来的ECMAScript 6(Harmony)背景下已经考虑过代码风格并且已经使用过该语言的人.

有了() => {}function () {}我们有两种非常相似的方法来编写ES6中的函数.在其他语言中,lambda函数通常通过匿名来区分自己,但在ECMAScript中,任何函数都可以是匿名的.这两种类型中的每一种都具有唯一的使用域(即,当this需要明确地绑定或明确地不绑定时).在这些域之间存在大量的情况,其中任何一种符号都可以.

ES6中的箭头功能至少有两个限制:

  • 不要工作 new
  • 固定this在初始化时限制范围

抛开这两个限制,箭头函数理论上几乎可以在任何地方替换常规函数.在实践中使用它们的正确方法是什么?是否应使用箭头功能,例如:

  • "他们工作的每个地方",即在任何地方,函数不必对this变量不可知,我们不创建对象.
  • 只有"需要的任何地方",即事件监听器,超时,需要绑定到某个范围
  • 具有'短'功能但不具有'长'功能
  • 仅适用于不包含其他箭头功能的功能

我正在寻找的是在ECMAScript的未来版本中选择适当的函数符号的指南.该指南需要明确,以便可以向团队中的开发人员讲授,并保持一致,这样就不需要从一个函数符号到另一个函数符号进行不断的重构.

javascript lambda ecmascript-harmony ecmascript-6 arrow-functions

379
推荐指数
6
解决办法
8万
查看次数

ES6 WeakMap的实际用途是什么?

WeakMapECMAScript 6中引入的数据结构的实际用途是什么?

由于弱映射的键会创建对其相应值的强引用,因此只要其键仍处于活动状态,确保插入到弱映射中的值永远不会消失,它不能用于备注表,缓存或您通常使用弱引用的任何其他内容,具有弱值的映射等.

在我看来,这个:

weakmap.set(key, value);
Run Code Online (Sandbox Code Playgroud)

......这只是一种迂回的说法:

key.value = value;
Run Code Online (Sandbox Code Playgroud)

我错过了哪些具体的用例?

javascript weakmap ecmascript-6

374
推荐指数
7
解决办法
6万
查看次数

并行调用async/await函数

据我所知,在ES7/ES2016中,将多个await代码放在代码中将类似于.then()使用promise 进行链接,这意味着它们将一个接一个地执行,而不是在并行执行.所以,例如,我们有这个代码:

await someCall();
await anotherCall();
Run Code Online (Sandbox Code Playgroud)

我是否理解正确,anotherCall()只有在someCall()完成后才会被调用?并行调用它们的最优雅方式是什么?

我想在Node中使用它,所以也许有一个async库的解决方案?

编辑:我对这个问题中提供的解决方案不满意:由于异步生成器中的非并行等待承诺而减速,因为它使用生成器而我正在询问更一般的用例.

javascript asynchronous node.js ecmascript-6 babeljs

347
推荐指数
9
解决办法
14万
查看次数

将符号引入ES6的动机是什么?

更新:最近一篇来自Mozilla精彩文章出现了.如果你好奇,请阅读它.

您可能知道他们计划在ECMAScript 6中包含新的Symbol原语类型(更不用说其他一些疯狂的东西).我一直认为:symbolRuby 中的概念是不必要的; 我们可以轻松地使用纯字符串,就像我们在JavaScript中一样.现在他们决定用JS复杂化JS.

我不明白动机.有人可以向我解释我们是否真的需要JavaScript中的符号吗?

javascript symbols ecmascript-harmony ecmascript-6

344
推荐指数
5
解决办法
5万
查看次数

对象传播与Object.assign

假设我有一个options变量,我想设置一些默认值.

这两种选择的好处/缺点是什么?

使用对象传播

options = {...optionsDefault, ...options};
Run Code Online (Sandbox Code Playgroud)

或者使用Object.assign

options = Object.assign({}, optionsDefault, options);
Run Code Online (Sandbox Code Playgroud)

这是让我惊讶的提交.

javascript ecmascript-6

343
推荐指数
9
解决办法
14万
查看次数

使用反应路由器V4以编程方式导航

我刚刚react-router从v3 更换为v4.
但我不知道如何以编程方式导航到一个成员函数Component.即在handleClick()功能中我想/path/some/where在处理一些数据后导航到.我曾经这样做过:

import { browserHistory } from 'react-router'
browserHistory.push('/path/some/where')
Run Code Online (Sandbox Code Playgroud)

但我在v4中找不到这样的接口.
如何使用v4导航?

ecmascript-6 reactjs react-router-v4

313
推荐指数
13
解决办法
22万
查看次数

如何在Javascript中为默认导入设置别名?

使用ES6模块,我知道我可以为命名导入添加别名

import { foo as bar } from 'my-module';
Run Code Online (Sandbox Code Playgroud)

而且我知道我可以导入默认导入

import defaultMember from 'my-module';
Run Code Online (Sandbox Code Playgroud)

我想为默认导入添加别名,我认为以下内容可行

import defaultMember as alias from 'my-module';
Run Code Online (Sandbox Code Playgroud)

但这会导致解析(语法)错误.

我怎么能(或者我可以?)别名默认导入?

javascript ecmascript-6 es6-modules

307
推荐指数
2
解决办法
12万
查看次数