在ES6中,这两个都是合法的:
var chopper = {
    owner: 'Zed',
    getOwner: function() { return this.owner; }
};
并且,作为速记:
var chopper = {
    owner: 'Zed',
    getOwner() { return this.owner; }
}
是否可以使用新的箭头功能?在尝试类似的东西
var chopper = {
    owner: 'John',
    getOwner: () => { return this.owner; }
};
要么
var chopper = {
    owner: 'John',
    getOwner: () => (this.owner)
};
我收到一条错误消息,提示该方法无权访问this.这只是一个语法问题,还是你不能在ES6对象中使用fat-pipe方法?
我将如何以与JS1.7 SomeClass.prototype.__iterator__ = function() {...}语法相同的方式从ES6类中创建迭代器?
[编辑16:00]
以下作品:
class SomeClass {
    constructor() {
    }
    *[Symbol.iterator]() {
        yield '1';
        yield '2';
    }
    //*generator() {
    //}
}
an_instance = new SomeClass();
for (let v of an_instance) {
    console.log(v);
}
WebStorm标记*[Symbol.iterator]()在asterix后面直接显示"函数名称预期"警告,但是否则会编译并与Traceur一起运行.(注意WebStorm不会生成任何错误*generator().)
我想知道什么时候ECMAScript 6来了,我们还需要在js代码中加入"use strict"吗?
在阅读了彼得关于JavaScript的文章后,我注意到了
Brendan Eich表示,Harmony的目标之一是成为JavaScript编译器的更好目标.
目前有两个流行的编译器有一些模糊的ES:符合Harmony:
虽然CoffeeScript有一些合规性,但它并不是设计成ES:Harmony编译器,所以它对此没有用.
Tracuer似乎更严格地坚持ES:Harmony规范,但我不知道它是否打算成为一个完整的ES:Harmony编译器.
由于目标是将ES6编译为ES3,因此还需要支持ES5功能(并且可能需要支持将ES5编译为ES3或ES6至ES3).
我在Traceur邮件列表上留下了一个问题.
这种编译器的目的是向后兼容ES3.在ES3中没有完全模拟ES5和ES6.
有人可以向我解释一下:为什么ES6中的发电机功能标有星号符号?
例如,而不是:
function *someGenerator() {
    yield 1;
    yield 2;
    yield 3;
}
我们可以写:
function someGenerator() {
    yield 1;
    yield 2;
    yield 3;
}
甚至:
var someGenerator = () => {
    yield 1;
    yield 2;
    yield 3;
}
var someObject = {
    someGenerator() {
        yield 1;
        yield 2;
        yield 3;
    }
}            
JS编译器可以在分析时检测到someGenerator包含yield运算符,并从该函数生成一个生成器.
为什么检测yield存在不够?
编辑:请阅读问题!我已经知道区别了.这不是重复的.
显然,现在我应该总是使用var关键词,因为let一切都不支持.
当let关键字有更好的支持时(比方说,我在几年内使用Harmony编写Node应用程序),我什么时候应该使用let关键字vs var关键字?
我理解差异 - var用于函数范围let而是用于块作用域 - 但我正在寻找像"总是使用let关键字"或" var在函数顶部使用关键字,但在for循环中使用let关键字"之类的东西.
有谁知道如何使用ES6箭头语法编写立即函数?
这是ES3/5的做法:
(function () {
   //...
}());
我尝试了以下但unexpected token在最后一行得到错误.
(() => {
  //...
}());
你可以在这里测试一下:http://www.es6fiddle.net/hsb8bgu4/
javascript function ecmascript-harmony ecmascript-6 arrow-functions
我正在尝试使用新的(ES6)Map对象来表示属性和值之间的映射.
我有类似于以下形式的对象:
 {key1:value1_1,key2:value2_1},..... {key1:value1_N,key2:value2_N}
我想根据key1 和 key2值对它们进行分组.
举例来说,我希望能够以组以下的x和y:
[{x:3,y:5,z:3},{x:3,y:4,z:4},{x:3,y:4,z:7},{x:3,y:1,z:1},{x:3,y:5,z:4}]
并获取包含以下内容的Map:
{x:3,y:5} ==>  {x:3,y:5,z:3},{x:3,y:5,z:4}
{x:3,y:4} ==>  {x:3,y:4,z:4},{x:3,y:4,z:7}
{x:3,y:1} ==>  {x:3,y:1,z:1}
在Python中,我使用元组作为字典键.ES6映射允许任意对象作为键,但使用标准相等算法(===),因此对象只能通过引用来区分我所知道的.
如何使用ES6地图完成这种分组?或者,如果有一种我忽略的优雅方式,使用普通JS对象的解决方案.
我宁愿不使用外部集合库 - 但如果有一个更好的解决方案使用我也有兴趣了解它.
我的问题是:鉴于提供的(非常简单的)生成器,是否可以将生成器恢复到其原始状态以便再次使用?
var generator = function*() {
    yield 1;
    yield 2;
    yield 3;
};
var iterable = generator();
for (let x of iterable) {
    console.log(x);
}
// At this point, iterable is consumed.
// Is there a method for moving iterable back
// to the start point by only without re-calling generator(),
// (or possibly by re-calling generator(), only by using prototype 
//  or constructor methods available within the iterable object)
// so the following code would work again?
for (let …我想做一些非常直接的事情Object.assign.
var firstObj = {name : "Saba H.", rollNo : 1};
var secondObj = {college : "WCE"};
var wholeObj = Object.assign(firstObj, secondObj);
console.log(wholeObj); // {name : "Saba H.", rollNo : 1, college : "WCE"}
作为Object.assignECMAScript6和声提案的一部分,并且在许多浏览器中都不支持,是否可以使用ES5?如果没有,那么有没有微型图书馆?
javascript ×10
ecmascript-6 ×6
ecmascript-5 ×1
equality ×1
function ×1
generator ×1
map ×1
object ×1
variables ×1