Tag: ecmascript 6

Object.freeze()vs const

Object.freeze()看起来像是在ES6中使用const的过渡便利方法。 有没有在代码中占据他们的位置的情况,还是有一种首选的方式来处理不可变数据? 我应该使用Object.freeze()直到所有浏览器支持const然后切换到使用const ?

ES6模板文字比string连接更快吗?

有没有人做基准? 我很好奇,如果HTML生成代码更快与string连接或与节点和现代浏览器中的模板文字。 例如: string连接 "<body>"+ "<article>"+ "<time datetime='" + date.toISOString() +"'>"+ date +"</time>"+ "</article>"+ "</body>" 模板文字 `<body> <article> <time datetime='${ date.toISOString() }'>${ date }</time> </article> </body>`

componentDidUpdate()中的setState()

我正在编写一个脚本,根据下拉的高度和input在屏幕上的位置,在下方或上方移动下拉菜单。 另外我想根据其方向设置下拉菜单。 但是,使用componentDidUpdate内部的setState创build一个无限循环(这是显而易见的) 我已经find了一个解决scheme,使用getDOMNode和设置classname直接下拉,但我觉得应该有一个更好的解决scheme,使用React工具。 有谁能够帮助我? 这里是getDOMNode的工作代码的一部分(ia一点点被忽略的定位逻辑来简化代码) let SearchDropdown = React.createClass({ componentDidUpdate(params) { let el = this.getDOMNode(); el.classList.remove('dropDown-top'); if(needToMoveOnTop(el)) { el.top = newTopValue; el.right = newRightValue; el.classList.add('dropDown-top'); } }, render() { let dataFeed = this.props.dataFeed; return ( <DropDown > {dataFeed.map((data, i) => { return (<DropDownRow key={response.symbol} data={data}/>); })} </DropDown> ); } }); 这里是setstate的代码(创build一个无限循环) let SearchDropdown = […]

在ES6模块中导出多个类

我试图创build一个导出多个ES6类的模块。 假设我有以下目录结构: my/ └── module/ ├── Foo.js ├── Bar.js └── index.js Foo.js和Bar.js分别导出一个默认的ES6类: // Foo.js export default class Foo { // class definition } // Bar.js export default class Bar { // class definition } 我目前有我的index.js像这样设置: import Foo from './Foo'; import Bar from './Bar'; export default { Foo, Bar, } 但是,我无法导入。 我希望能够做到这一点,但没有find类: import {Foo, Bar} from […]

你如何JSON.stringify ES6地图?

我想开始使用ES6 Map而不是JS对象,但我被阻止,因为我不知道如何JSON.stringify()一个地图。 我的钥匙保证是string,我的价值永远是列表。 我真的必须编写一个封装方法来序列化?

用于导入commonjs / amd模块的新的es6语法,例如`import foo = require('foo')`

以前我可以这样做: import foo = require('foo'); 但是现在TypeScript(1.5)支持es6模块语法,在ES6模块语法中实现相同的正确方法是什么?

箭头函数“expression预期”的语法错误

我想转换这个代码: var formatQuoteAmount = function (tx) { return Currency.toSmallestSubunit(tx.usd, 'USD'); }; var quoteAmounts = res.transactions.map(formatQuoteAmount); 变成一个匿名的箭头function。 我写了这个: var quoteAmounts = res.transactions.map(tx => Currency.toSmallestSubunit(tx.usd, 'USD')); 我在箭头处得到expression expected语法错误。 我查了这里的默认语法 ,似乎我的代码的语法是正确的。 任何想法可能是什么问题? 我有这个语法的工作: var quoteAmounts = res.transactions.map(function (tx) { return Currency.toSmallestSubunit(tx.usd, 'USD') }); 但是我想把它作为一个单线,带有箭头function。 在node v5.3.0上运行

Douglas Crockford在JavaScript中使用Class Free OOP

道格拉斯·克罗克福德(Douglas Crockford)在ES6的“更好的部分”(The Better Parts)上做了非常好的演讲 除此之外,他鼓励摆脱原型inheritance,转而采用免class级的面向对象方式 。 在这里,他说他停止使用new , Object.create ,而this ,但没有真正解释一个替代scheme。 任何人都可以填写我可能看起来如何?

如何在Visual Studio 2013中使用ECMAScript 6语法

我有兴趣在我使用Visual Studio 2013开发的Web应用程序中使用ECMAScript 6function。目前语法似乎不工作,如何configurationVS使其工作?

如何在本地存储(或其他地方)中保留ES6映射?

var a = new Map([[ 'a', 1 ]]); a.get('a') // 1 var forStorageSomewhere = JSON.stringify(a); // Store, in my case, in localStorage. // Later: var a = JSON.parse(forStorageSomewhere); a.get('a') // TypeError: undefined is not a function 不幸的是JSON.stringify(a); 只是返回“{}”,这意味着恢复时变成空对象。 我发现es6-mapify允许在一个Map和一个普通对象之间进行向上/向下的转换,所以这可能是一个解决scheme,但是我希望我需要求助于一个外部的依赖关系来保存我的地图。