class Thing {
constructor(parameter) {
if (parameter) {
this.x = parameter;
}
return this;
}
getX() {
return this.x;
}
static specialThing() {
return new Thing('Special Thing');
}
}
let thingy = Thing.specialThing();
thingy.getX(); // 'Special Thing'
我想在JavaScript中完成上述操作(儘管以更復雜的形式)。當我運行這個代碼時,它運行良好,但我感到奇怪的是,在類中的某個函數返回該類的實例化版本。有沒有什麼理由不以這種方式構建我的代碼?有了ES6類,可以從靜態方法返回該類的實例嗎?
甲起作用的替代靜態方法是:
Thing.specialThing =() => {
return new Thing('Special Thing');
};
什麼是一些長處和短處(如果有的話),使用的這些東西任一個?有沒有其他更好的方法可以實現我不知道的目標?
有什麼都沒有錯。 – Pointy
這個結構在其他語言中是非常常見的,你可能還沒有在js中看到它的唯一原因是因爲類是JavaScript的新手。 –
很酷的感謝回覆@Pointy&@Pamblam! 另外一般問題 - 爲什麼評論答案而不是回答? – thisissami