在ES6中,这两个都是合法的:
var chopper = {
owner: 'Zed',
getOwner: function() { return this.owner; }
};
Run Code Online (Sandbox Code Playgroud)
并且,作为速记:
var chopper = {
owner: 'Zed',
getOwner() { return this.owner; }
}
Run Code Online (Sandbox Code Playgroud)
是否可以使用新的箭头功能?在尝试类似的东西
var chopper = {
owner: 'John',
getOwner: () => { return this.owner; }
};
Run Code Online (Sandbox Code Playgroud)
要么
var chopper = {
owner: 'John',
getOwner: () => (this.owner)
};
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息,提示该方法无权访问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);
}
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
我们可以写:
function someGenerator() {
yield 1;
yield 2;
yield 3;
}
Run Code Online (Sandbox Code Playgroud)
甚至:
var someGenerator = () => {
yield 1;
yield 2;
yield 3;
}
var someObject = {
someGenerator() {
yield 1;
yield 2;
yield 3;
}
}
Run Code Online (Sandbox Code Playgroud)
JS编译器可以在分析时检测到someGenerator包含yield运算符,并从该函数生成一个生成器.
为什么检测yield存在不够?
编辑:请阅读问题!我已经知道区别了.这不是重复的.
显然,现在我应该总是使用var关键词,因为let一切都不支持.
当let关键字有更好的支持时(比方说,我在几年内使用Harmony编写Node应用程序),我什么时候应该使用let关键字vs var关键字?
我理解差异 - var用于函数范围let而是用于块作用域 - 但我正在寻找像"总是使用let关键字"或" var在函数顶部使用关键字,但在for循环中使用let关键字"之类的东西.
有谁知道如何使用ES6箭头语法编写立即函数?
这是ES3/5的做法:
(function () {
//...
}());
Run Code Online (Sandbox Code Playgroud)
我尝试了以下但unexpected token在最后一行得到错误.
(() => {
//...
}());
Run Code Online (Sandbox Code Playgroud)
你可以在这里测试一下: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}
Run Code Online (Sandbox Code Playgroud)
我想根据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}]
Run Code Online (Sandbox Code Playgroud)
并获取包含以下内容的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}
Run Code Online (Sandbox Code Playgroud)
在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 …Run Code Online (Sandbox Code Playgroud) 我想做一些非常直接的事情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"}
Run Code Online (Sandbox Code Playgroud)
作为Object.assignECMAScript6和声提案的一部分,并且在许多浏览器中都不支持,是否可以使用ES5?如果没有,那么有没有微型图书馆?
javascript ×10
ecmascript-6 ×6
ecmascript-5 ×1
equality ×1
function ×1
generator ×1
map ×1
object ×1
variables ×1