新しいクラスを作成して最終的に親this.property
を呼び出すことなく、実行時およびインスタンスごとにオーバーライドするにはどうすればよいですか?doAnotherThing
var ThridPartyObject = function() {
this.property = 'value';
this.doOneThing= function() { /* */ }
this.doAnotherThing= function() { /* */ }
};
運が悪い:
ThridPartyObject.prototype = {
property: 'myvalue',
doOneThing: function() { // Override only this function and call the other
return this.doAnotherThing();
}
};
編集property
:存在する場合と存在しない場合があると言うのを忘れました。
これが必要なのは、backbone.js ですべてのモデル インスタンスのカスタム プロパティを定義する必要があり、一部の関数が元のバックボーンとは異なる方法で動作する必要があるためです。バックボーンが a を定義する方法は次のとおりですBackbone.Model
(これ_.extend
は underscore.js からのものです)。
var Model = Backbone.Model = function(attributes, options) {
var defaults;
attributes || (attributes = {});
if (options && options.collection) this.collection = options.collection;
if (options && options.parse) attributes = this.parse(attributes);
if (defaults = getValue(this, 'defaults')) {
attributes = _.extend({}, defaults, attributes);
}
this.attributes = {};
this._escapedAttributes = {};
this.cid = _.uniqueId('c');
this.changed = {};
this._silent = {};
this._pending = {};
this.set(attributes, {silent: true});
// Reset change tracking.
this.changed = {};
this._silent = {};
this._pending = {};
this._previousAttributes = _.clone(this.attributes);
this.initialize.apply(this, arguments);
};
// Attach all inheritable methods to the Model prototype.
_.extend(Model.prototype, Events, {
// cut
});