gpt4 book ai didi

JavaScript 生成器及其原型(prototype)链

转载 作者:行者123 更新时间:2023-12-01 15:15:56 25 4
gpt4 key购买 nike

我正在玩弄 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);
问题 1
似乎每个生成器对象都有自己独特的原型(prototype),并且它们都共享一个共同的原型(prototype):
const x = function*(){}();
const y = x.__proto__;
const z = y.__proto__;
console.log(b === y); // false
console.log(c === z); // true
我的上述理解正确吗?
问题2
由于 fnull , e大概是 Object.prototype :
console.log(e === Object.prototype); // true
但是,我无法弄清楚 d 是什么是。有没有 Something.prototype等于 d ?

最佳答案

在部分 GeneratorFunction Objects ,有一个关系图:
generator_objects_relationships
问题 1
是的。
问题2dIteratorPrototype .并由文档:

The following expression is one way that ECMAScript code can accessthe %IteratorPrototype% object:

Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))

好像没有 Iterator这样 Iterator.prototype等于 d .

关于JavaScript 生成器及其原型(prototype)链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63298076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com