首頁 > web前端 > js教程 > 主體

如何在沒有「new」關鍵字的情況下呼叫 ES6 類別建構子?

Patricia Arquette
發布: 2024-10-26 02:27:27
原創
534 人瀏覽過

How Can I Call an ES6 Class Constructor Without the

在沒有「new」的情況下呼叫 ES6 類別建構子

在 ES6 中,類別是建構子的語法糖。當不使用 new 關鍵字呼叫類別時,它不會建立該類別的新實例。相反,它直接呼叫類別的建構函數。

考慮以下類別:

<code class="javascript">class Foo {
  constructor(x) {
    if (!(this instanceof Foo)) return new Foo(x);
    this.x = x;
  }
  hello() {
    return `hello ${this.x}`;
  }
}</code>
登入後複製

如果我們嘗試在不使用new 關鍵字的情況下呼叫此類,則會收到錯誤:

Cannot call a class as a function
登入後複製

這是因為類別構造函數旨在創建類別的新實例。不使用 new 運算子呼叫它們相當於呼叫常規函數。

為了允許在不使用new 關鍵字的情況下呼叫類別建構函數,我們可以使用建構子和箭頭函數的組合,如下:

<code class="javascript">class Foo {
  constructor(x) {
    if (!(this instanceof Foo)) return new Foo(x);
    this.x = x;
  }
  hello() {
    return `hello ${this.x}`;
  }
}

const FooWithoutNew = () => new Foo(...arguments);</code>
登入後複製

現在,我們可以使用FooWithoutNew 來呼叫不含new 關鍵字的類別建構子:

FooWithoutNew("world").hello(); // "hello world"
登入後複製

但是,需要注意的是,這種方法有一些缺點。首先,它需要創建一個單獨的函數,這可能很不方便。其次,它破壞了建構函式傳回新實例的行為。

一般情況下,為了清晰和一致性,建議始終使用 new 關鍵字呼叫類別建構子。

以上是如何在沒有「new」關鍵字的情況下呼叫 ES6 類別建構子?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!