我将如何以与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().)
似乎可以在构造函数中嵌套一个类,然后可以从类中的任何地方实例化,这是官方的吗?
[编辑]例如,
class C {
constructor() {
class D {
constructor() { }
}
}
method() {
var a = new D(); // works fine
}
}
//var a = new D(); // fails in outer scope
Run Code Online (Sandbox Code Playgroud)
traceur生成了JS https://google.github.io/traceur-compiler/demo/repl.html
$traceurRuntime.ModuleStore.getAnonymousModule(function() {
"use strict";
var C = function C() {
var D = function D() {};
($traceurRuntime.createClass)(D, {}, {});
};
($traceurRuntime.createClass)(C, {method: function() {
var a = new D();
}}, {});
return {};
});
//# sourceURL=traceured.js
Run Code Online (Sandbox Code Playgroud) 当我想到我应该在StackOverflow上询问是否有必要时,我几乎将YUI断言模块移植到独立库中.但是我完成了libs:
YUIPort:https://github.com/gso/YUIPort
但我想我也会适当地问.是否存在任何高质量的断言函数独立库 - 这些函数非常有用,例如,检查传递给函数的参数的有效性(可以节省大量时间调用调试器).
class AbstractClass {
constructor() {
}
set property(value) {
this.property_ = value;
}
get property() {
return this.property_;
}
}
class Subclass extends AbstractClass {
constructor() {
super();
}
set property(value) {
super.property = value;
if (!(this.property_ instanceof SubclassAssociatedClass)) throw new TypeError();
}
//get property() {
// return super.property;
//}
}
Run Code Online (Sandbox Code Playgroud)
覆盖set属性的方法,看起来get方法也必须被覆盖,否则undefined返回(即,get方法不是继承的,取消注释get property()上面的子类方法,一切正常).
我认为这是规范的一部分,但如果行为是交叉编译的结果,可能会遵循.可以肯定的是,这是编码重写的setter和getter(同时还是根本没有)的正确方法?
是否有适用于Javascript的iCalendar库 - 解析器或日历对象本身?
有谁知道如何(或者如果可能)在Sublime中格式化coffeescript评论?
javascript ×5
ecmascript-6 ×3
traceur ×2
class ×1
coffeescript ×1
icalendar ×1
rfc2445 ×1
sublimetext ×1