Bar*_*ski 4 javascript ecmascript-6
首先,看看这段代码.
var arr = [1,2,3,4];
> undefined
var si1 = arr[Symbol.iterator];
> undefined
var it1 = si1();
> Uncaught TypeError: Cannot convert undefined or null to object(…)(anonymous function) @ VM11886:2InjectedScript._evaluateOn @ VM9769:875InjectedScript._evaluateAndWrap @ VM9769:808InjectedScript.evaluate @ VM9769:664
var it2 = arr[Symbol.iterator]();
> undefined
it2.next()
> Object {value: 1, done: false}
Run Code Online (Sandbox Code Playgroud)
现在问题是:为什么会产生类型错误?我打电话的方式it1不一样(或等同)it2吗?
当你调用它si1(),函数有一个this的undefined.arr[Symbol.iterator]()设置this为arr.
考虑到这一点
arr[Symbol.iterator] === Array.prototype[Symbol.iterator]
Run Code Online (Sandbox Code Playgroud)
它必须是调用函数时的上下文决定结果的内容.
| 归档时间: |
|
| 查看次数: |
105 次 |
| 最近记录: |