Node v0.10.20提供了许多与和声有关的选项,
--harmony_typeof (enable harmony semantics for typeof)
--harmony_scoping (enable harmony block scoping)
--harmony_modules (enable harmony modules (implies block scoping)
--harmony_proxies (enable harmony proxies)
--harmony_collections (enable harmony collections (sets, maps, and weak maps))
--harmony (enable all harmony features (except typeof))
Run Code Online (Sandbox Code Playgroud)
我知道这些不是生产就绪的功能,而且它们正在开发中,但其中很多都足够好.
有没有办法在运行时启用它们?
"use strict";
"use harmony collections";
Run Code Online (Sandbox Code Playgroud)
像上面这样的东西.即使它不仅仅是模块级别启用这些功能,最好确保它们在模块内部启用而不是假设它们已启用.
我知道"新"和直接调用普通函数之间的区别.
但是发电机功能如何呢?
例如:
function *counter(){
let n = 0;
while (n < 2) {
yield n++;
}
return 10;
}
var countIter1 = new counter();
var countIter2 = counter();
Run Code Online (Sandbox Code Playgroud)
看来他们是一样的?
以下是我运行js代码的方法:
node --harmony ./data/app.js
Run Code Online (Sandbox Code Playgroud)
现在我想转向CoffeeScript.所以我尝试像这样运行它:
coffee ./data/app.coffee
Run Code Online (Sandbox Code Playgroud)
它失败了.我该如何通过此--harmony选项?
有人可以帮我理解使用Koa.js和Bluebird.js与ES6 Harmony之间的区别.具体来说,怎么做
co( function * () {
//stuff
} );
Run Code Online (Sandbox Code Playgroud)
相比于,
Promise.coroutine( function * () {
//stuff
} );
Run Code Online (Sandbox Code Playgroud)
似乎Koa应该使用Bluebird而不是重新创建轮子.有什么不同?
在对象上有一个活动的Object.observe是否会阻止它被垃圾回收?您是否需要先调用Object.unobserve以允许它被垃圾回收?或者GCing一个对象是否删除了所有活动的观察者?
javascript garbage-collection ecmascript-harmony object.observe
如果我有
Class Car {}
Run Code Online (Sandbox Code Playgroud)
我需要用我们的函数闭包来包装吗?var会被提升到窗口吗?还是只到班上?转换后怎么样?Traceur/babel将它变成IIFE并让我们进入var?
我需要:
(function(){
Class Car() {}
}());
Run Code Online (Sandbox Code Playgroud)
为了安全吗?
我的应用程序是ES6 React应用程序与react-router.我想在一小段延迟后将用户重定向到另一个页面.这是我的React组件:
import React from 'react'
import { Navigation } from 'react-router'
export default class Component extends React.Component {
render () {
return (
<div>Component content</div>
)
}
componentDidMount () {
setTimeout(() => {
// TODO: redirect to homepage
console.log('redirecting...');
this.context.router.transitionTo('homepage');
}, 1000);
}
}
Component.contextTypes = {
router: React.PropTypes.func.isRequired
}
Run Code Online (Sandbox Code Playgroud)
和react-router路由表:
render(
<Router>
<Route path='/' component={ App }>
<IndexRoute component={ Component } />
</Route>
</Router>
, document.getElementById('app-container'));
Run Code Online (Sandbox Code Playgroud)
问题是"路由器"属性未传递到组件中.Chrome控制台的内容是:
Warning: Failed Context Types: Required context `router` was not specified in …Run Code Online (Sandbox Code Playgroud) 我想使用现在的“阶段3”提案import()。如果我用ESLint编写代码,则会抱怨:
Parsing error: 'import' and 'export' may only appear at the top level
Run Code Online (Sandbox Code Playgroud)
这对于静态形式是正确的,import但对于新的动态形式却不正确。我找不到使ESLint允许的正确选项。有人可以给我提示吗?
我已经尝试过自己查看ES6草案,但我不确定在哪里看:
有人能告诉我,this在ES6中是否必然引用全局对象?此外,此对象是否与全局范围具有相同的成员?
如果您能回答ES5也会有所帮助.
我知道this在全局范围内是指浏览器和大多数其他ES环境中的全局对象,如Node.我只是想知道这是规范定义的行为,还是实现者已添加的扩展行为(如果这种行为在ES6实现中继续).另外,全局对象总是与全局范围相同吗?或者有区别吗?
更新 - 为什么我想知道:我基本上是想弄清楚如何在ES5和6中可靠地获取全局对象.我不能依赖,window因为这是特定于浏览器的,我也不能依赖,global因为这是特定于环境的喜欢Node.我知道this在Node中可以参考module模块范围,但我认为它仍然指的是global全局范围.我想要一个跨环境ES5和6兼容的方式来获取全局对象(如果可能).似乎this在全球范围内我所知道的所有环境都是这样,但我想知道它是否是实际规范的一部分(在我可能不熟悉的任何环境中都是如此可靠).
我还需要知道全局范围和全局对象是否与规范相同.换句话说,全局范围内的所有变量都是一样的globalobject.variable_name吗?
更新2 - 我正在尝试做的事情:
我为ES5环境开发了一些ES6垫片.我想知道(1)检查ES6内置函数是否已经存在以便在可能的情况下使用它们而不是我的垫片,以及(2)将垫片添加到全局范围内的最佳方法(1) ins还不存在.
目前我正在遵循这种模式:
(function() {
// Indirect eval to run in global scope.
// (We get whatever "this" is in global scope, hoping that it's the global object...
// Whether this line does what I want it to is the crux of my question.)
var global …Run Code Online (Sandbox Code Playgroud) 我用的Node.js(0.11.13)与--harmony标志和使用function *()和yield关键字.
我试图在coffeescript的帮助下简化我在node.js上的开发,到目前为止它工作得很好但我遇到麻烦yield并声明了一个生成器 - 它抱怨'保留关键字产量'.
有任何想法吗?
javascript ×7
coffeescript ×2
node.js ×2
appjs ×1
bluebird ×1
co ×1
ecmascript-5 ×1
ecmascript-6 ×1
eslint ×1
generator ×1
koa ×1
option ×1
react-router ×1
reactjs ×1
v8 ×1
yield ×1