如何通过构造函数在另一个对象下设置对象

时间:2015-08-06 17:12:51

标签: javascript class object inheritance constructor

我有一个像

一样的构造函数
function foo() {
    this.bar = function() {
         return "fubar";
    }
}

当我拨打new foo().bar();

时没问题

但如果我想做这样的事情

function foo() {
    this.bar = function() {
         function subbar() {
            return "subbar";
         };
    }
}

我已经尝试过以下版本,但没有一个可以使用。

function foo() {
    this.bar = function() {
         this.bar.subbar() {
            return "subbar";
         };
    }

}

function foo() {
    this.bar = function() {
         this.bar.prototype.subbar() {
            return "subbar";
         };
    }
}

如何到达new foo().bar().subbar()

之类的子栏

2 个答案:

答案 0 :(得分:3)

只返回一个具有最内层功能的对象:

function foo() {
        this.bar = function() {
            return { subbar: function subbar() {
                return "subbar";
             };
        }
    }
}

或者,您可以在没有对象的情况下返回函数:

function foo() {
    this.bar = function() {
        return function subbar() {
            return "subbar";
         };
    }
}

然后你会这样称呼它:this.bar()()第二组parens调用返回的subbar()函数

由于函数是对象,当您调用bar()时,返回值将是函数subbar()

答案 1 :(得分:2)

你想要的是返回一个附加了函数的对象。

function foo() {
  this.bar = function() {
    return {
      subbar: function() {
        return 'subbar';
      }
    };
  };
}