勘误
Proxy对象的所用用法,都是上面这种形式,不同的只是handler参数的写法。其中,new Proxy()表示生成一个Proxy实例,target参数表示所要拦截的目标对象,handler参数也是一个对象,用来定制拦截行为。
“所用用法“应该是“所有用法“
上面代码中,proxy对象是obj对象的原型,obj对象本身并没有time属性,所有根据原型链,会在proxy对象上读取该属性,导致被拦截。
“所有“应该是“所以“
Reflect对象的方法清单如下。
* Reflect.getOwnPropertyDescriptor(target,name)
* Reflect.defineProperty(target,name,desc)
* Reflect.getOwnPropertyNames(target)
* Reflect.getPrototypeOf(target)
Reflect对象的方法清单漏了 Reflect.setPrototypeOf(obj, newProto)
,在清单后面的几个方法的解释中提到了这个方法
对于类似数组的对象(存在数值键名和length属性),部署Iterator接口,有一个简便方法,就是Symbol.iterator方法直接引用数值的Iterator接口。
“数值的Iterator接口“应该是“数组的Iterator接口”
ES6规定,默认的Iterator接口部署在数据结构的Symbol.iterator
属性,或者一个数据结构只要具有Symbol.iterator
属性,就可以认为是“可遍历的”(iterable)。也就是说,调用Symbol.iterator
方法,就会得到当前数据结构的默认遍历器。Symbol.iterator
本身是一个表达式,返回Symbol对象的iterator属性,这是一个预定义好的、类型为Symbol的特殊值,所以要放在方括号内(请参考Symbol一节)。
感觉文中Iterable,Iterator,IteratorResult三个接口并没有明确区分,主要是前两者,比如说上面的引用段落
“默认的Iterator接口“应该是Iterable接口可能更合适些,其它部分也有类似表述问题。
对数组和Set结构进行解构赋值时,会默认调用iterator接口。
文中说的“调用iterator接口”表述上是不是有些不当,我觉得调用接口的方法更加合适些。
上文中说调用Iterable接口的Symbol.iterator方法是不是更准确些。 或者简单说调用Symbol.iterator方法。
Symbol.iterator属性执行后,返回自身。
属性应为方法
上面代码中,delegatingIterator是代理者,delegatedIterator是被代理者。由于yield* delegatedIterator
语句得到的值,是一个遍历器,所以要用星号表示。运行结果就是使用一个遍历器,遍历了多个Genertor函数,有递归的效果。
Genertor 应该为 Generator
如果遍历器函数内部没有部署try...catch代码块,那么throw方法抛出的错误,将被外部try...catch代码块捕获。
这里“遍历器函数“是不是应该是“Generator 函数“
上面代码只输出hello就结束了,因为第二次调用next方法时,遍历器状态已经变成终止了。但是,如果使用throw方法抛出错误,不会影响遍历器状态。
“throw方法“应该为“throw命令“
上面代码中,Promise指定在下一轮“事件循环”再抛出错误,结果由于没有指定catch语句,就冒泡到最外层,成了未捕获的错误。
文中说“没有指定catch语句“,这里的“catch语句“是指try-catch语句吧,感觉容易误想成catch方法
在ES5中,每一个对象都有__proto__
属性,指向对应的构造函数的prototype属性。Class作为构造函数的语法糖,同时有prototype属性和__proto__
属性,因此同时存在两条继承链。
__proto__
虽然大多数浏览器支持,但是前面章节也讲并没有加入ES6,这里这么说"在ES5中,每一个对象都有__proto__
属性“是不是不太合适
然后,main.js文件输入circlek.js模块。
circlek.js 应该为 circle.js
console.log(exp(math.pi));
math.pi是不是应该是math.e
一些疑问
http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types 有下面的描述
The ECMAScript language types are Undefined, Null, Boolean, String, Symbol, Number, and Object.
为什么Symbol一章中讲的是8种数据类型?
构造函数的prototype属性,在ES6的“类”上面继续存在。事实上,除了constructor方法以外,类的方法都定义在类的prototype属性上面。
constructor不也是prototype的一个属性吗
sfirsetHeader
没明白这个函数名的意思