Je crée une application basée sur le service GAS Spreadsheets qui lit/écrit & met à jour une ligne de données. J'ai un objet clé-valeur qui représente une ligne de données, comme les données d'exemple fournies dans l'extrait.Littéral d'objet avec fonction imbriquée en tant que prototype de données Objet
utilisation:
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;
Le new DataRecordObject
est le prototype d'un objet de feuille qui fournit d'autres propriétés utiles. _SumTotal
est une fonction d'assistance.
Ma question:
Quand j'appelle une nouvelle DataRecordObject avec la gamme de feuille comme argument, comment puis-je mettre à jour l'objet exampleData avec les nouvelles propriétés telles que totalVolumeProcessed
?
Par exemple:
var foo = new _DataRecordObject(exampleData);
Console.log(foo);
//[{weekEnding='Aug-17',weekMonth=4,weekendVolume=5186270,midweekVolume=16405609,totalVolumeProcessed=21591879}]
Je voudrais la flexibilité d'utiliser inheritence constructeur-prototype, mais en utilisant un modèle de style boilerplate comme objet littéraux. Mon intuition suggère que je dois passer les clés d'objet de données lors de la construction d'un nouvel objet dataRecordObject. Je suis un nouveau venu dans JavaScript et je n'ai pas encore compris ce que sont l'héritage, les prototypes et les modèles de design respectifs. Les usines et les modules, ou peut-être les observateurs semblent des modèles appropriés, mais mon expérience limitée avec JS est un facteur limitant pour résoudre mon problème.
'totalVolumeProcessed' n'a pas besoin d'être mis à jour, c'est une méthode. – Bergi
Oui, vous devriez probablement stocker la valeur du paramètre 'exampledata' dans une propriété de l'objet, tout comme vous l'avez fait avec' this._endOfWeek = ... '. – Bergi
Hey @Bergi merci pour les commentaires.J'ai reformulé ma question car je pense que mon langage était trompeur. Fondamentalement, je veux mettre à jour l'objet 'exampleData' en utilisant les méthodes fournies par le prototype' _DataRecordMethods'. –