我正在創建一個基於GAS Spreadsheets Service的應用程序,它可以讀取/寫入&更新一行數據。我有一個代表一行數據的鍵值對象,就像片段中提供的示例數據一樣。嵌套函數作爲數據原型的對象字面值對象
使用案例:
var exampleData = [{weekendVolume=5186270,midweekVolume=16405609}];
// tuple length 2 of two known values
function _DataRecordObject(exampleData) {
this._endOfWeek = new Date().endOfWeek();// Date.prototype method
}
var _DataRecordMethods = {
weekEnding: function() {
return this._endOfWeek.formatDateString()
},
weekMonth: function() {
return this._endOfWeek.getMonthLabelShort()
},
/* Processed volume */
weekendVolume: function() {
return 'weekendVolume'
},
midweekVolume: function() {
return 'midweekVolume'
},
totalVolumeProcessed: function() {
return _SumTotal(
this.weekendVolume(),
this.midweekVolume()
)
}
}
_DataRecordObject.prototype = _DataRecordMethods;
的new DataRecordObject
是一個表對象,它提供其他有用的性質的原型。 _SumTotal
是一個輔助函數。
我的問題:
當我打電話與片範圍作爲參數新DataRecordObject,如何更新與新的特性,例如totalVolumeProcessed
的exampleData對象?
例如:
var foo = new _DataRecordObject(exampleData);
Console.log(foo);
//[{weekEnding='Aug-17',weekMonth=4,weekendVolume=5186270,midweekVolume=16405609,totalVolumeProcessed=21591879}]
我想使用構造原型繼承,但使用類似對象的文字一個樣板式的模板的靈活性。我的直覺表明,我需要在構建新的dataRecordObject時傳遞數據對象鍵。
我是JavaScript的新手,尚未掌握繼承,原型和各自的設計模式。工廠和模塊,或者觀察員似乎是合適的模式,但我對JS的有限經驗是解決我的問題的限制因素。
'totalVolumeProcessed'不需要更新,這是一種方法。 – Bergi
是的,您可能應該將'exampledata'參數值存儲在對象的屬性中,就像您使用'this._endOfWeek = ...'所做的一樣。 – Bergi
嘿@Bergi感謝您的反饋。因爲我認爲我的語言具有誤導性,所以我重新提出了我的問題。基本上我想使用'_DataRecordMethods'原型提供的方法更新'exampleData'對象。 –