fre*_*low 6 javascript prototype generator
我正在玩弄 JavaScript 生成器,并根据以下代码及其输出有 2 个问题:
const a = function*(){}(); // Object [Generator] {}
const b = a.__proto__; // Object [Generator] {}
const c = b.__proto__; // Object [Generator] {}
const d = c.__proto__; // {}
const e = d.__proto__; // {}
const f = e.__proto__; // null
console.log(a, b, c, d, e, f);
Run Code Online (Sandbox Code Playgroud)
似乎每个生成器对象都有自己独特的原型,而且它们都有一个共同的原型:
const x = function*(){}();
const y = x.__proto__;
const z = y.__proto__;
console.log(b === y); // false
console.log(c === z); // true
Run Code Online (Sandbox Code Playgroud)
我的上述理解是否正确?
由于f是null,e可能是Object.prototype:
console.log(e === Object.prototype); // true
Run Code Online (Sandbox Code Playgroud)
但是,我无法弄清楚是什么d。有Something.prototype等于d吗?
在GeneratorFunction Objects部分,有一个关系图:

是的。
d是一个IteratorPrototype。并由文档:
以下表达式是 ECMAScript 代码访问 %IteratorPrototype% 对象的一种方式:
Run Code Online (Sandbox Code Playgroud)Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))
似乎不存在等于 的Iterator这样的。Iterator.prototyped
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |