JS 如何调用函数内部的函数(可以这样的理解:通过一个函数可以调用另一个函数的内部函数)

如题所述

第1个回答  2011-07-08
var obj = function() {
this.a = function(arg){alert(arg);}
this.b = function(arg){alert(arg+1);}
}
var fn = new obj;
fn.a('TEST');追问

function one(){
function a(){
alert("我很好!");
}
}
function two(){
//想在这里面调用函数one里面的a怎么弄?
}

追答

调用不了,你的a()放在one()里,对外面而言,a()是匿名函数,外面访问不到。
你可以改成:
function one(){
this.a = function(){
alert("我很好!");
}
}
这样,你就可以用我上面的方法来调用
也可以改成
function one(){
window.a = function(){
alert("我很好!");
}
}
这样,a()就是全局函数,你可以在任何地方直接调用

本回答被提问者采纳
第2个回答  2018-03-30

两种方法:

    实例化函数为对象

    闭包返回内部值

解释为什么不能直接访问函数内的变量或内嵌函数

function foo(){
    var var1=18;
    function baz(){
        console.log(var1);
    }
}
baz(); // ReferenceError
foo.var1; // TypeError
foo.baz(); // TypeError

函数具有隔离内部值,即保护内部私有值或函数的能力。所不直接或间接访问。

方法一:实例化函数对象,略....。

方法二:闭包

function foo(){
    var val1=18;
    function baz(){
        console.log(val1);
    }
    return { //返回值对象实质上是一个 我们模块的公有API
        varl1:varl1,
        baz:baz
    }

}
var m=foo();
m.var1; // ok
m.baz(); // ok

第3个回答  2017-10-23
可以用闭包
相似回答