标签:undefined 运行时 lin 否则 自动 没有 语句 uid class
function* helloWorldGenerator() {
yield ‘hello‘;
yield ‘world‘;
return ‘ending‘;
}
var hw = helloWorldGenerator();
hw.next()
// { value: ‘hello‘, done: false }
function* iterEntries(obj) {
let keys = Object.keys(obj);
for (let i=0; i < keys.length; i++) {
let key = keys[i];
yield [key, obj[key]];
}
}
let myObj = { foo: 3, bar: 7 };
// for...of 拿到的值就是yield表达式的值,所以才能结构。
for (let [key, value] of iterEntries(myObj)) {
console.log(key, value);
}
// foo 3
// bar 7
function showLoadingScreen() {
console.log(‘step1‘);
}
function loadUIDataAsynchronously() {
setTimeout(() => {
loader.next("异步操作sync"); // 把结果传递出去
}, 2000);
}
function hideLoadingScreen() {
console.log(‘step3‘);
}
function* loadUI() {
showLoadingScreen();
var res = yield loadUIDataAsynchronously();
console.log(res) //拿到异步执行的结果
hideLoadingScreen();
}
var loader = loadUI();
loader.next()
function* F() {
yield this.name = ‘generator‘
}
F.prototype.getName = function() {
console.log(this.name) //undefind 这里拿不到定义的状态
console.log(this) // F {<suspended>}
console.log(‘gen‘) // ‘gen‘
};
// 声明一个空的对象
var obj = {};
var f = F.call(obj);
f.next()
f instanceof F; // true
f.getName(); //标注在实例方法中
console.log(obj.name) //这里也是只用执行了next()方法后才能打印出 generator‘ ,否则就是undefined
或
function* F() { yield this.name = ‘generator‘ } F.prototype.getName = function() { console.log(this.name) //undefind 这里拿不到定义的状态 console.log(this) // F {<suspended>} console.log(‘gen‘) // ‘gen‘ }; // F自己原型 var f = F.call(F.prototype); f.next() f instanceof F; // true f.getName(); //标注在实例方法中 console.log(f.name) //这里也是只用执行了next()方法后才能打印出 generator‘ ,否则就是undefined
摘自阮一峰es6
标签:undefined 运行时 lin 否则 自动 没有 语句 uid class
原文地址:https://www.cnblogs.com/Paul-Yellow/p/10896199.html