Skip to content

Instantly share code, notes, and snippets.

@aurimasv
Last active August 29, 2015 14:08
Show Gist options
  • Save aurimasv/f752a6a1450a24fe67f9 to your computer and use it in GitHub Desktop.
Save aurimasv/f752a6a1450a24fe67f9 to your computer and use it in GitHub Desktop.
Zotero DataObject inheritance
// Base DataObject
Zotero.DataObject = function () {
let objectType = this._objectType;
this._ObjectType = objectType[0].toUpperCase() + objectType.substr(1);
this._objectTypePlural = Zotero.DataObjectUtilities.getObjectTypePlural(objectType);
// ...
this._loaded = {};
for (let i=0; i<this._dataTypes.length; i++) {
this._loaded[this._dataTypes[i]] = false;
}
this._clearChanged();
};
Zotero.DataObject.prototype._objectType = 'dataObject';
Zotero.DataObject.prototype._dataTypes = [];
// Zotero.Item extends DataObject
Zotero.Item = function(itemTypeOrID) {
if (arguments[1] || arguments[2]) {
throw ("Zotero.Item constructor only takes one parameter");
}
Zotero.Item._super.apply(this);
// ...
}
Zotero.Item._super = Zotero.DataObject;
Zotero.Item.prototype = Object.create(Zotero.Item._super.prototype);
Zotero.Item.constructor = Zotero.Item;
Zotero.Item.prototype._objectType = 'item';
Zotero.Item.prototype._dataTypes = Zotero.Item._super.prototype._dataTypes.concat([
'primaryData',
'itemData',
'note',
'creators',
'childItems',
'relatedItems', // TODO: remove
'tags',
'collections',
'relations'
]);
// Zotero.FeedItem extends Zotero.Item
Zotero.FeedItem = function(itemTypeOrID) {
Zotero.FeedItem._super.apply(this);
}
Zotero.FeedItem._super = Zotero.Item;
Zotero.FeedItem.prototype = Object.create(Zotero.FeedItem._super.prototype);
Zotero.FeedItem.constructor = Zotero.FeedItem;
Zotero.FeedItem.prototype._objectType = 'feedItem';
Zotero.FeedItem.prototype._dataTypes = Zotero.FeedItem._super.prototype._dataTypes.concat([
]);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment