Javascript 扩展函数返回的属性?
我是一个JS初学者。我在主干模型上定义了一个函数,如下所示Javascript 扩展函数返回的属性?,javascript,backbone.js,Javascript,Backbone.js,我是一个JS初学者。我在主干模型上定义了一个函数,如下所示 myFunction: function () { return { firstAttr: this.model.get('value-attribute') }; } 我可以通过this.myFunction使用它 我想从代码中的其他地方扩展this.myFunction以返回另一个属性。换句话说,我希望它返回一个带有两个属性的dict:{firstAttr:'something',secondAttr:true}
myFunction: function () {
return {
firstAttr: this.model.get('value-attribute')
};
}
我可以通过this.myFunction
使用它
我想从代码中的其他地方扩展this.myFunction
以返回另一个属性。换句话说,我希望它返回一个带有两个属性的dict:{firstAttr:'something',secondAttr:true}
我该怎么做
我试过:
this.myFunction().secondAttr = true;
但我知道这样做是错误的 将您的
myFunction
修改为:
myFunction : function () {
var i,
obj = {};
for (i=0; i< arguments.length;i++){
obj['attribute'+(i+1)] = this.model.get(arguments[i]);
}
return obj;
}
myFunction:function(){
var i,
obj={};
对于(i=0;i
通过这种方式,您可以发送
模型的键
,如果您的模型原型看起来像
var MyModel = Backbone.Model.extend({
myFunction: function () {
return {
// I assume you work directly on a model
// the principle would be the same with a wrapper object
firstAttr: this.get('value-attribute')
};
}
});
您可以在逐个模型的基础上屏蔽方法,如下所示:
var m = new MyModel({'value-attribute': 'attr, the first'});
console.log(m.myFunction());
m.myFunction = function () {
var res = MyModel.prototype.myFunction.call(this);
res.secondAttr = true;
return res;
};
console.log(m.myFunction());
请参见演示
或者动态修改原型以更改所有实例:
var f = MyModel.prototype.myFunction;
MyModel.prototype.myFunction = function () {
var res = f.call(this);
res.secondAttr = true;
return res;
};
var m = new MyModel({'value-attribute': 'attr, the first'});
console.log(m.myFunction());
好吧,myFunction每次都返回一个新对象,因此this.myFunction().secondAttr
没有多大意义,因为它会立即丢失var f=this.myFunction();f、 secondAttr=true代码>?