Tôi đang đọc Bạn không biết JS: ES6 & Ngoài và tôi đã gặp đoạn mã này trong phần Symbol.species.Điều này trong đoạn mã này là gì?
class Cool {
// defer `@@species` to derived constructor
static get [Symbol.species]() { return this; }
again() {
return new this.constructor[Symbol.species]();
}
}
class Fun extends Cool {}
class Awesome extends Cool {
// force `@@species` to be parent constructor
static get [Symbol.species]() { return Cool; }
}
var a = new Fun(),
b = new Awesome(),
c = a.again(),
d = b.again();
c instanceof Fun; // true
d instanceof Awesome; // false
d instanceof Cool; // true
Nó có vẻ như các Symbol.species chức năng {return Something} nên luôn luôn trả về một hàm constructor. Nhưng trong sự hiện diện đầu tiên của chức năng này: static get [Symbol.species]() { return this; }
Tôi bối rối vì tôi luôn nghĩ rằng đây phải là một đối tượng thay vì hàm xây dựng. Bạn có thể giúp tôi làm rõ sự thật không?
Và khoảng return new this.constructor[Symbol.species]();
, nội dung này ở đây đề cập đến điều gì?