javascript - variable - node.js class



匿名類實例-這是一個壞主意嗎? (1)

匿名類實例 - 這是一個壞主意嗎?

是的,非常糟糕的一個。 和ES5中的new function() { … }一樣糟糕 。

每次評估表達式時,這種寫作風格都會導致創建一個新的構造函數和原型對象。 如果用這種方法創建多個對象,他們將不會獲得類/原型的好處。

如果你打算使用這種模式創建一個單例對象,那麼你也失敗了。 構造函數仍然被創建,甚至可以訪問 - 使用new entity.constructor可以很容易地創建第二個實例,從而達到完整的目的。

所以不要使用它 。 一個簡單的對象文字更易於編寫,讀取和實例化:

var entity = {
    name: 'Foo',
    getName() { return this.name; }
};
console.log(entity.name); // Foo

不要被new class模式常見的其他語言所迷惑,它在JavaScript中的工作方式非常不同。

在ES6中,我們可以做匿名課程:

var entity = class {
}

但是我們也可以實例化它:

var entity = new class {
    constructor(name) { this.name = name; }
    getName() { return this.name; }
}('Foo');
console.log(entity.getName()); // Foo

它背後做了什麼,它會帶來什麼樣的好處,還會帶來什麼警告呢?





anonymous-function