ES6 中沒有 new 關鍵字呼叫類別建構子
給定類別定義:
class Foo { constructor(x) { if (!(this instanceof Foo)) return new Foo(x); this.x = x; } hello() { return `hello ${this.x}`; } }
不使用new關鍵字是無法直接呼叫類別建構子的。這是因為 ES6 中的類別本質上有一個建構函數,該函數在呼叫類別時會被呼叫。
在沒有new 的情況下調用類別會導致錯誤:
Cannot call a class as a function
此錯誤訊息清楚地表明只能使用new 運算符調用類建構函數,這是創建類別的新實例所必需的。
要克服此限制,請考慮以下方法:
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"
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3