JQuery检查变量是否是函数
这个问题在这里已经有了答案:
在你的例子中,为了得到testFunction
的引用,如果它在范围内,你可以使用eval
。 是的,我说过, eval
,所以你必须知道,如果你没有为函数名称清理它,那么用户可能会操纵该字符串来运行恶意代码;
var testController = function() {
alert('123');
}
$(function() {
$('[mfour]').each(function(e, t) {
var a = eval($(t).attr('mfour'));
console.log($.isFunction(testController));
console.log($.isFunction(a));
})
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div mfour="testController">Hello</div>
尝试使用window[varname]
- 假定该函数在全局范围内
喜欢这个
DEMO
var testController = function() {
alert('123');
}
$(function() {
$('[mfour]').each(function(e, t) {
var a = $(t).attr('mfour');
console.log($.isFunction(testController));
console.log($.isFunction(window[a]));
console.log(typeof window[a] === "function");
})
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div mfour="testController">Hello</div>
要检查变量是否为函数,只需添加一个检查
typeof variableName
它会返回变量的类型。
多德..
如果可能,请将您的函数添加到对象。 如下所示
var obj = {
testController: function(){
alert('123');
}
};
$(function() {
$('[mfour]').each(function(e, t) {
var a = $(t).attr('mfour');
console.log($.isFunction(obj[a]));
})
});
链接地址: http://www.djcxy.com/p/94839.html