Panggil Pembina Kelas Tanpa Kata Kunci baharu dalam ES6
Memandangkan takrifan kelas:
class Foo { constructor(x) { if (!(this instanceof Foo)) return new Foo(x); this.x = x; } hello() { return `hello ${this.x}`; } }
Tidak mungkin untuk terus memanggil pembina kelas tanpa kata kunci baharu. Ini kerana kelas dalam ES6 sememangnya mempunyai fungsi pembina yang digunakan apabila kelas dipanggil.
Menyebut kelas tanpa keputusan baharu dalam ralat:
Cannot call a class as a function
Mesej ralat ini menunjukkan dengan jelas bahawa pembina kelas hanya boleh dipanggil dengan operator baharu, yang diperlukan untuk mencipta tika baharu kelas.
Untuk mengatasi had ini, pertimbangkan pendekatan berikut:
function Foo(x) { this.x = x; this.hello = function() { return `hello ${this.x}`; } }
(new Foo("world")).hello(); // "hello world"
var FooWrapper = function(...args) { return new Foo(...args) }; FooWrapper("world").hello(); // "hello world"
Atas ialah kandungan terperinci Bolehkah Anda Memanggil Pembina Kelas Tanpa \'baharu\' dalam ES6?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!