在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){

我正在使用主干,但我觉得这更像是一个一般的javascript语法问题。
如何在方法(或函数中的函数)中添加方法并通过链接两者来调用它们

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;
             }
        }
    }
});