从另一个范围调用函数

时间:2013-12-27 13:02:49

标签: javascript

请帮助运行不同范围的功能

有以下代码:

function a(){
    var rrr = 8;
    function aim(arg){
        console.log('aim' + arg);
        console.log(rrr);
    }
};

function b(){
    a.aim('this is argument');
};

呼叫a.aim ('this is argument');不起作用,控制台显示消息

  

未捕获的ReferenceError:a未定义

试图通过申请来打电话。也没有成功

4 个答案:

答案 0 :(得分:4)

使用揭示模块模式:

var a = function(){
   var rrr = 8;
   function aim(arg){
    console.log('aim' + arg);
        console.log(rrr);
   }

   return {      
      aim: aim
   }
}();

function b() {
    a.aim('test');
}

答案 1 :(得分:0)

function a(){
    var rrr = 8;
    return function aim(arg){
        console.log('aim' + arg);
        console.log(rrr);
    }
};


function b(){
    var aim = a();
    aim('this is argument');
};

答案 2 :(得分:0)

如果要将a函数称为对象,则需要先创建它。此外,aim应该是此函数(类)的属性

function a() {
    var rrr = 8;
    this.aim = function(arg) {
        console.log('aim' + arg);
        console.log(rrr);
    }
};

function b() {
    var aa = new a();
    aa.aim('this is argument');
}

答案 3 :(得分:0)

您需要进行两项小修改:

function a(){
    var rrr = 8;
    this.aim = function(arg){
        console.log('aim' + arg);
        console.log(rrr);
    }
};

var aa = new a();
function b(){
    aa.aim('this is argument');
};