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
它背後做了什麼,它會帶來什麼樣的好處,還會帶來什麼警告呢?