2014-05-25 106 views
1

如何从JavaScript中的对象内的函数调用另一个函数。如何在对象函数中调用另一个函数

例如,我试图做到这一点:

var mydiv1 = document.querySelector('.div1'); 
var mydiv2 = document.querySelector('.div2'); 

var myVariable1; 
var myVariable2; 

var myObject = (function() { 
    return { 
     function1 : function (myVariable1) { 
      myVariable2 = "this was called from a function and inserted by function2"; 
      mydiv1.innerHTML = myVariable1; 
      function2(myVariable2); 
     }, 

     function2 : function (myVariable2) { 
      mydiv2.innerHTML = myVariable2; 
     } 
    }; 

}()); 

mydiv1.addEventListener('click', function() { 
    myVariable1 = "this was called from a function and inserted by function1"; 
    myVariable2 = "this was called from a function and inserted by function2"; 
    myObject.function1(myVariable1); 
}); 

这里是一个小提琴http://jsfiddle.net/kvtxd/6/

“功能1”运行为例外,但我得到一个错误,函数2是不确定的。这样做的正确方法是什么?

我使用对象的原因是,我可以根据需要单独调用每个内部函数。我只是调用function2但不是function1。

看,如果我使用:

function WholeFunction() { 
    function function1() { 
    // 
    } 
    function function2() { 
    // 
    } 
} 

然后功能1和功能2超出范围,我只能叫了整个事情。

回答

2

使用“本”关键字时,在函数内部:

function1 : function (myVariable1) { 
      myVariable2 = "this was called from a function and inserted by function2"; 
      mydiv1.innerHTML = myVariable1; 
      this.function2(myVariable2); // use "this" here!!!! 
     }, 

这里有一个Fiddle

+1

它总是小事! – user3143218

+0

“this”是指对象,变量还是函数? – user3143218

+0

@ user3143218:'this'指对象。 – Guffa

相关问题