// 类
// 类的继承是根据原型链来的
// 类实际上是一个具有构造函数方法行为的函数
// 注:
// 1. 函数声明可以提升,但是类的声明与let声明类似,不能被提升。
// 2. 类声明的代码将自动运行在严格模式下,并且不能让代码脱离严格模式
// 3. 在自定义类型中,需要通过object.definePropert() 方法手工指定某个方法为不可枚举;而在类中所有方法都是不可枚举的
// 4. 每个类中都有一个名[[Construct]]的内部方法
// 5. 使用除关键字new以外的方法调用类的构造函数会导致程序出错
// 6. 在类中修改类名会导致程序报错
// 生成器方法
/*
class Collection {
constructor() {
this.items = [];
}
*[Symbol.iterator]() {
// yield *也可以直接用于字符串,例如yield * 'hello',此时将使用字符串的默认迭代器
yield *this.items.entries()
}
}
var collection = new Collection();
collection.items.push(1);
collection.items.push(2);
collection.items.push(3);
for(let x of collection) {
console.log(x)
}*/