GeneratorFunction
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.
Đối tượng GeneratorFunction cung cấp các phương thức cho hàm generator. Trong JavaScript, mỗi hàm generator thực ra là một đối tượng GeneratorFunction.
Lưu ý rằng GeneratorFunction không phải là đối tượng toàn cục. Nó có thể được lấy bằng đoạn code sau:
const GeneratorFunction = function* () {}.constructor;
GeneratorFunction là lớp con của Function.
Try it
const GeneratorFunction = function* () {}.constructor;
const foo = new GeneratorFunction(`
yield 'a';
yield 'b';
yield 'c';
`);
let str = "";
for (const val of foo()) {
str += val;
}
console.log(str);
// Expected output: "abc"
Constructor
GeneratorFunction()-
Tạo đối tượng
GeneratorFunctionmới.
Thuộc tính instance
Cũng kế thừa các thuộc tính instance từ lớp cha Function.
Các thuộc tính này được định nghĩa trên GeneratorFunction.prototype và được chia sẻ bởi tất cả các instance GeneratorFunction.
GeneratorFunction.prototype.constructor-
Hàm constructor đã tạo đối tượng instance. Đối với các instance
GeneratorFunction, giá trị khởi tạo là constructorGeneratorFunction. GeneratorFunction.prototype.prototype-
Tất cả các hàm generator chia sẻ cùng một thuộc tính
prototype, làGenerator.prototype. Mỗi hàm generator được tạo bằng cú phápfunction*hoặc constructorGeneratorFunction()cũng có thuộc tínhprototyperiêng, có prototype làGeneratorFunction.prototype.prototype. Khi hàm generator được gọi, thuộc tínhprototypecủa nó trở thành prototype của đối tượng generator được trả về. GeneratorFunction.prototype[Symbol.toStringTag]-
Giá trị khởi tạo của thuộc tính
[Symbol.toStringTag]là chuỗi"GeneratorFunction". Thuộc tính này được dùng trongObject.prototype.toString().
Đây là các thuộc tính riêng của mỗi instance GeneratorFunction.
Phương thức instance
Kế thừa các phương thức instance từ lớp cha Function.
Đặc tả kỹ thuật
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-generatorfunction-objects> |