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

 我来答
binjly
2011-07-08 · TA获得超过3064个赞
知道大有可为答主
回答量:2017
采纳率:0%
帮助的人:2712万
展开全部
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()就是全局函数,你可以在任何地方直接调用
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友f3bc83b
2018-03-30
知道答主
回答量:2
采纳率:0%
帮助的人:2万
展开全部

两种方法:

  1. 实例化函数为对象

  2. 闭包返回内部值

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

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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7622a98
2017-10-23
知道答主
回答量:2
采纳率:0%
帮助的人:1829
展开全部
可以用闭包
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式