var a = {
b: {
aa: 'hello',
bb: 'you',
cc: 'guys'
}
}
var b = function(){
$.each(a.b, function(x){
if( $.isFunction(x) == 'function' ){
alert(x);
};
});
};
var aa = function(){
var dude = 'hi there';
}
b();
我在b函数中有一个每个循环。
我想要做的是遍历a.b值,并找出一个函数是否存在它的名字。在这种情况下,唯一应触发的是'aa'作为'aa存在的函数。
isfunction线是否正确?还是会打字?
答案 0 :(得分:2)
在这种情况下,唯一应触发的是'aa'作为'aa存在的函数。
$.each()
正在迭代传递给它的Object
成员。目前,function
aa
不是Object
a.b
的成员。
$.isFunction()
未返回true
,因为a.b
的每个成员都有String
值:
aa: 'hello',
bb: 'you',
cc: 'guys'
如果您希望function
成为Object
的成员,则需要将其设置为其中一个属性的值:
a.b.aa = function () {
var dude = 'hi there';
};
这会将'hello'
值替换为对function
。
要重用属性名称以查找全局变量,您可以在全局对象(浏览器中为window
)上使用它们。
var key = 'aa';
var val = window[key];
var b = function () {
$.each(a.b, function (key) {
if (key in window && $.isFunction(window[key])) {
alert(key + ' is a global function.');
}
});
};
尽管如此,请注意小提琴选项中的“无包装< body> ”。这只适用于全局变量,因为在代码中不能访问其他范围对象。