//symbol创建对象属性方法1
//向对象中添加方法 up down
let game = {
name:'俄罗斯方块',
up: function(){},
down: function(){}
};
//声明一个对象
let methods = {
up: Symbol(),
down: Symbol()
};
game[methods.up] = function(){
console.log("我可以改变形状");
}
game[methods.down] = function(){
console.log("我可以快速下降!!");
}
console.log(game);
game[methods.up]();
let a = Symbol('say');
let b = Symbol('zibao');
let youxi ={
a: function(){
console.log('我说')
},
b: function(){
console.log('自爆')
}
}
youxi.a();
console.log(youxi);
//声明一个数组
const xiyou = ['1','2','3','4'];
//使用 for...of 遍历数组
// for(let v of xiyou){
// console.log(v);
//}
//iterator 迭代器
// let iterator = xiyou[Symbol.iterator]();
//调用对象的next方法
// console.log(iterator.next());
//console.log(iterator.next());
//生成器其实就是一个特殊的函数
//yieldyield这个关键字是用来暂停和恢复一个遍历器函数(的运行)的
//而yield告诉程序当前的状态值,而且你运行到这里暂停一下
function *gen(){
console.log(111);
yield'眼睛';
console.log(222);
yield'耳朵';
}
// let iterator = gen();
// console.log(iterator.next());
//console.log(iterator.next());
//next方法可以传入实参
function * gen(arg){
console.log(arg);
let one = yield 111;
console.log(one);
let two = yield 222;
console.log(two);
let three = yield 333;
console.log(three);
}
//执行获取迭代器对象
// let iterator = gen('aaa');
//console.log(iterator.next());
//console.log(iterator.next('bbb'));
// 异步编程 文件操作 网络操作(ajax, request) 数据库操作
// 1s 后控制台输出 111 2s后输出 222 3s后输出 333
function one (){
setTimeout(()=>{
console.log('111');
iterator.next();
},1000)
}
function two(){
setTimeout(()=>{
console.log('111');
iterator.next();
},1000)
}
function three (){
setTimeout(()=>{
console.log('111');
iterator.next();
},1000)
}
//生成器
function *gen(){
yield'one';
yield'two';
yield'three';
}
//调用
//let iterator = gen();
// iterator.next();
function getusers (){
setTimeout(()=>{
let data = '用户数据';
//调用 next 方法, 并且将数据传入
//第二次调用next
iterator.next(data);
},1000)
}
function getorders(){
setTimeout(()=>{
let data = '订单数据';
iterator.next(data);
},1000)
}
//生成器
function *gen(){
//第二次调用next的实参是第一个yield的返回结果
let users =yield getusers();
let orders = yield getorders();
}
let iterator = gen();
iterator.next();
console