Bolehkah Anda Memanggil Pembina Kelas Tanpa \'baharu\' dalam ES6?

Susan Sarandon
Lepaskan: 2024-10-26 01:55:02
asal
303 orang telah melayarinya

 Can You Call a Class Constructor Without 'new' in ES6?

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}`;
  }
}
Salin selepas log masuk

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
Salin selepas log masuk

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:

  • Gunakan fungsi biasa sebaliknya:
function Foo(x) {
  this.x = x;
  this.hello = function() {
    return `hello ${this.x}`;
  }
}
Salin selepas log masuk
  • Sentiasa panggil kelas dengan baharu:
(new Foo("world")).hello(); // "hello world"
Salin selepas log masuk
  • Balut kelas dalam fungsi dan panggil dengan baharu:
var FooWrapper = function(...args) { return new Foo(...args) };
FooWrapper("world").hello(); // "hello world"
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!