我需要测试/工作属于ES6草案的生成器.为了解决这个问题,我需要一个浏览器(在我的例子中).由于Google Canary严格用于开发人员,因此它现在支持发电机吗?我的操作系统是Windows 7.
使用这样的--harmony标志可以在node.js中实现相同的效果:
node --harmony app.js
Run Code Online (Sandbox Code Playgroud)
因此它将添加对EcmaScript6的支持.
如何使用和声标志运行gulp命令?
当编程语言是静态类型时,编译器可以更精确地关于内存分配,因此通常更高性能(所有其他条件相同).
我相信ES4引入了可选类型提示(根据我的理解,Adobe因为actionscript而在其规范中做出了巨大贡献).javascript是否正式支持类型提示?ES6是否支持原生变量的可选类型提示?
如果Javascript支持类型提示,是否有任何基准测试表明它在性能方面如何得到回报?我还没有看到一个开源项目使用它.
javascript variables performance ecmascript-4 ecmascript-harmony
我正在阅读ES6的草案,我注意到以下Object.prototype.toString部分中的这个注释:
从历史上看,此函数偶尔用于访问本规范以前版本中使用的[[Class]]内部属性的字符串值,作为各种内置对象的名义类型标记.toString的这个定义保留了将它用作那些特定类型的内置对象的可靠测试的能力,但它没有为其他类型的内置或程序定义的对象提供可靠的类型测试机制.
通过在es-discuss上阅读这个帖子,听起来好像在ES6草案中[[Class]]被替换,[[NativeBrand]]以便他们可以将其指定为不可扩展(那些至少是Allen Wirfs-Brock的想法).
好奇,我在FireFox和Chrome上进行了快速测试(启用了实验性JavaScript):
Object.prototype.toString.apply(new WeakMap());
=> '[object WeakMap]'
Run Code Online (Sandbox Code Playgroud)
"WeakMap"不是[[NativeBrand]]ES6草案中规定的内容之一.但是,这"[object WeakMap]"两个浏览器都返回了此测试.
所以我很困惑.我有几个问题.
1. Chrome和Firefox的行为是否正确?
从阅读草案的一种方式来看,它听起来应该回归[object Object](而且所有这些都是新的,所以在这些浏览器的未来版本中看到这种变化我不会感到惊讶).但是,我很难理解草案本节的意图,特别是因为有一些地方"???".
是否有人更热切地关注es-discuss有任何相关信息?或者任何能够更好地理解草案语言的人?
2.有替代方案Object.prototype.toString吗?
从上面引用的说明中,它听起来好像Object.prototype.toString是为了遗留原因而保留,好像现在应该使用新的东西.特别是读取节点的一部分"it does not provide a reliable type testing mechanism for other kinds of built-in ... objects".这是否意味着未来的内置插件无法使用此方法进行测试?
让我们用一个具体的例子.
如果我想确保我从未知来源收到的String对象是一个对象(一个实际构造的String对象,而不是一个原始字符串),我可以这样做:
if (Object.prototype.toString.apply(unknownObject) != '[object String]')
throw new TypeError('String object expected.');
Run Code Online (Sandbox Code Playgroud)
这让我知道是否unknownObject是一个String …
我使用Intellij Idea为一些ES Harmony应用程序.使用模块语法我希望我的IDE不要将其突出显示为错误:
import $ from "jquery";
Run Code Online (Sandbox Code Playgroud)
我已经在项目设置中转换了ES Harmony支持,但它没有帮助.
谢谢!
我正在使用Babel将ES6转换为ES5并且效果很好.唯一的问题是,一旦转换成每个模块重复这些行:
var _get = function get(object, property, receiver) { var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc && desc.writable) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
var _inherits = function (subClass, superClass) { if (typeof superClass !== "function" …Run Code Online (Sandbox Code Playgroud) 我有这样的代码
class Animal{}
class Dog extends Animal {}
class Cat extends Animal {}
class Donkey extends Animal {}
Run Code Online (Sandbox Code Playgroud)
我想查看我的应用程序的Universe中的所有类,当我找到一个来自Animal的类时,我想创建一个该类型的新对象并将其添加到列表中.这允许我添加功能而无需更新事物列表.所以我可以避免以下情况:
var animals = [];
animals.push( new Dog() );
animals.push( new Cat() );
animals.push( new Donkey() );
Run Code Online (Sandbox Code Playgroud)
PS:我不想为我的类添加额外的功能或明确地调用它们.
为了使用es6,我们在命令行中传递和声标志
node --harmony myscript.js
Run Code Online (Sandbox Code Playgroud)
有没有办法从文件内部执行此操作,例如use harmony?
#! /usr/bin/node
use harmony
class MyScript {
constructor (options) {
this.options = options;
}
get options () {
return this.options
}
}
Run Code Online (Sandbox Code Playgroud) 是否有一种干净的方法来从同一范围内的2个相似对象中构造相同的变量?
function(oldState, newState) {
let {foo, bar} = oldState;
// do stuff //
let {foo, bar} = newState; // illegal double declaration in same scope
{foo, bar} = newState; // illegal, not sure why
let {foo: foo1, bar: bar1} = newState; // legal but ugly
foo = newState.foo; // legal, but requires multiple lines
}
Run Code Online (Sandbox Code Playgroud) 什么是和谐出口?其实,和谐是什么?
背景
当我使用Webpack打包内容并查看分发源时,它始终包含此块。
// define getter function for harmony exports
__webpack_require__.d = function(exports, name, getter) {
if(!__webpack_require__.o(exports, name)) {
Object.defineProperty(exports, name, { enumerable: true, get: getter });
}
};
Run Code Online (Sandbox Code Playgroud)
我用Google搜索并找到了此页面,但我对此一无所知。截至今天,该页面的内容如下:
我用更多的谷歌搜索,发现了一个类似的问题,问什么是和谐,但问问者从来没有用太多的话问过它,唯一的答案并没有告诉你什么是和谐。
题
那么,在上帝自己的绿色地球上,和谐是什么?那么什么是和谐出口?
阅读“ ecmascript-harmony”的堆栈溢出标签说明时,我怀疑它是指ES6模块导出,但我也认为并非如此,因为此后Webpack源分发文件立即具有一个if结构来检查该entry文件是否为处理使用该export语句公开ES 6模块。
// define __esModule on exports
__webpack_require__.r = function(exports) {
if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
}
Object.defineProperty(exports, '__esModule', { value: true });
};
Run Code Online (Sandbox Code Playgroud)
因此,这可能意味着除了ES 6模块导出以外的其他内容?我怀疑这是在Node中实现的Common JS …
javascript ×6
ecmascript-6 ×5
gulp ×2
node.js ×2
amd ×1
babeljs ×1
ecmascript-4 ×1
generator ×1
oop ×1
performance ×1
shebang ×1
syntax ×1
variables ×1
webpack ×1