JavaScript中如何在带有嵌套函数的函数中使用property方式执行该嵌套函数?

2014-01-16 23:56:11 +08:00
 zzNucker
比如这样定义的函数。

function A(){

function B(){

}

}

我想在function A 中使用类似 Obj['B']()的方法访问函数B,有方法么。
貌似作用域是封闭的,除非我是用this.b = function () {} 来主动添加到global object,否则没用。
2675 次点击
所在节点    问与答
14 条回复
clippit
2014-01-17 00:06:38 +08:00
B 是局部变量,直接用就可以了呀~
zzNucker
2014-01-17 00:09:37 +08:00
@clippit 嗯嗯,主要是我有个地方有很多个函数名的字符串,调用起来不想用eval,感觉没啥好方法。
clippit
2014-01-17 00:29:50 +08:00
@zzNucker 可以存到一个 object 里面,比如 var inner_methods = {'b': b}; 这样,然后 inner_method['b'](); 就是用字符串形式访问了
zzNucker
2014-01-17 00:37:21 +08:00
@clippit 我现在就存到数组里了,当时是想这样行不行,强迫症了算。
Mutoo
2014-01-17 00:45:51 +08:00
function A(){

function B(){
console.log("I'm B");
}
this.B = B; // 脱裤子放屁
this["B"]();
}

A();
Mutoo
2014-01-17 00:47:07 +08:00
function B(){}
其实是
var B = function(){};
的语法糖
FrankFang128
2014-01-17 00:57:36 +08:00
1 你以为jQuery为什么要占用$符号。
2 永远不要在 JS 里滥用全局变量,除非你不得不这样做。
FrankFang128
2014-01-17 00:58:06 +08:00
@Mutoo 这是两个不同的语句,不是糖。
FrankFang128
2014-01-17 01:03:06 +08:00
给你的 utils 申请一个名称空间费多大的事?

//utils.js
myApp.utils = {
func1:.....
}

// foo.js

function bar(){
var func1 = myApp.utils.func1
func1()
}
FrankFang128
2014-01-17 01:04:51 +08:00
一个 App 用到两个全局变量都算多了。
zzNucker
2014-01-17 02:05:00 +08:00
@FrankFang128 我一个全局变量都没占用,也不想占用,所以才问这个。我这纯粹是想讨论想是否可能。 你的解决方案我知道可以,只是想问下是不是能访问到这种Obj。
rekey
2014-01-17 07:33:39 +08:00
你是想在a()里面还是外面使用。这很重要。你仔细看你的描述,我是理解不了的
zzNucker
2014-01-17 21:28:32 +08:00
@rekey A中
ql9075
2014-08-22 15:55:16 +08:00
a 函数里 return { b : b} 。a调用这个属性

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/97324

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX