Es6

- 使用 generator 重写
- 增加测试用例

#8 
extend 只支持 undefined