2015-06-20 71 views
2

我有兩個班,一個汽車添加方法類的Node.js

var config = require('./configuration'); 

module.exports.Car = function(){} 

module.exports.Car.prototype.set_tires = config.set_tires; 
module.exports.Car.prototype.remove_tires = config.remove_tires; 

module.exports.Car.prototype.drive = function(){console.log("BRUMMM BRUMMM")} 

摩托車

var config = require('./configuration'); 

module.exports.Motorbike = function(){} 

module.exports.Motorbike.prototype.set_tires = config.set_tires; 
module.exports.Motorbike.prototype.remove_tires = config.remove_tires; 

module.exports.Motorbike.prototype.drive = function(){ console.log("BR BR BRUUMM")} 

正如你看到的無論是從配置實現方法看起來像這樣:

module.exports.set_tires = function(tires){ 
    this.tires = tires; 
} 

module.exports.remove_tires = function(){ 
    console.log("The " + this.tires + " Tires will be removed"); 
    this.tires = null; 
} 

我想知道是否有另一種更好的方法來實現這些方法?在這個例子中,我給了你只有兩個共享的方法,但隨着更多,你可以很容易地失去了概述。 另外我想知道是否有更好的方法來不經常重複module.exports

+1

爲什麼不將module.exports分配給變量?然後,您可以避免爲每個新方法或屬性再次編寫module.exports。 – Blauharley

回答

2

看起來好像你想合併兩個對象。你可以用Object.assign如果有這樣做:

Object.assign(Motorbike.prototype, config); 

的替代方法見How can I merge properties of two JavaScript objects dynamically?

+0

呃......不確定如果Firefox是唯一實施它的人,我會推薦這個。很高興看到它是標準的一部分,圖書館總是自己實施這個。 – Katana314

+0

我想我會去那個:https://www.npmjs.com/package/object-assign再次感謝! –

+0

@ Katana314:鑑於我們有polyfills,沒有理由不使用新的API。 Transpilers甚至允許我們使用新的語法和行爲。我相信這是在我們這裏推動採用。 –