在javascript中向方法添加方法
我正在使用主干,但我觉得这更像是一个一般的javascript语法问题。在javascript中向方法添加方法,javascript,function,backbone.js,methods,syntax,Javascript,Function,Backbone.js,Methods,Syntax,我正在使用主干,但我觉得这更像是一个一般的javascript语法问题。 如何在方法(或函数中的函数)中添加方法并通过链接两者来调用它们 var myModel = Backbone.Model.extend({ method1: function(x){ method2: function(y){ return x*y; } } // or perhaps method1: function(x){
如何在方法(或函数中的函数)中添加方法并通过链接两者来调用它们
var myModel = Backbone.Model.extend({
method1: function(x){
method2: function(y){
return x*y;
}
}
// or perhaps
method1: function(x){
{
method2: function(y){
x = x*y;
}
}
return x;
}
});
var mymodel = new myModel();
mymodel.method1(3).method2(5); // outputs 15
通常通过返回原始对象来实现链接
var myModel = Backbone.Model.extend({
methodSub: function(x){
this.x -= x;
return this;
},
methodAdd: function(y){
this.y += y;
return this;
}
});
或者像这样:(但它本质上是另一个对象,应该被适当地定义)
不知道他们中是否有人是你想象的那样。但在本质上,你必须返回一些东西来链接一些东西。否则,该方法将返回undefined,并且不能在undefined上调用方法。当我单独调用
method1
时,它不能返回this
。我需要method1
知道method2
是否在它后面链接。不要以为你能“知道”一个方法是否在它后面链接。但是你可以这样做(我会改变答案),效果很好!但是,当我仅仅调用mymodel.methodSub(3)
时,如何返回x
?不知道是否有更好的方法,但我想你可以在地图中添加x:x。我不知道我在这方面没有任何成功:/
var myModel = Backbone.Model.extend({
methodSub: function(x){
this.x -= x;
return {
x : this.x,
/* val : this.x, Or simply val, if that seems appropriate */
methodAdd: function(y){
this.x += y;
return this;
}
}
}
});