Javascript:从函数对象中调用对象函数

时间:2015-08-10 15:22:24

标签: javascript function oop

我的问题似乎是,如果我从函数对象中调用它,我的对象函数是不可见的。示例代码:

function foo()
{
   this.bar = function() 
              { 
                 alert("hit me!"); 
              }

   this.sna = { 
                 fu:   function () 
                       {
                          this.bar();
                       }
              };

}

this似乎是指sna而不是foo。我如何地址foothis.parent不起作用。

2 个答案:

答案 0 :(得分:1)

一种选择是添加对this的引用:

function foo() {

  var _t = this;

  this.bar = function() { };

  this.child = {
    this.foo = function() {
      _t.bar():
    };
  };

}

答案 1 :(得分:1)

使用变量来引用this(Foo)。见this - JavaScript | MDN

function Foo() {
    this.bar = function() {
        console.log("hit me!");
    };

    var that = this;

    this.sna = {
        fu: function() {
            that.bar();
        }
    };

}

var foo = new Foo();
foo.bar();
foo.sna.fu();