我有以下代码示例:
Application.Polyfills.prototype.prettifyCode = function(enable, js_lib, css_lib) {
return Modernizr.load([{
test : enable,
yep : [ css_lib, js_lib ],
complete: function() {
return window.prettyPrint && prettyPrint();
}
}]);
};
如果我做一个console.log(typeof this.prettifyCode)
,其中this
指的是Application.Polyfills
,我得到function
,但如果我做了console.log(typeof this.prettifyCode())
我得到undefined
。有人能告诉我为什么会这样吗?我该如何解决它,以便在两种情况下得到相同的结果,因为大多数时候函数需要参数,所以我需要使用括号?
更具体地说,我有一个方法:
Application.Polyfills.prototype.callPolyfills = function(array) {
for (var i = array.length - 1; i >= 0; i--) {
console.log(typeof array[i]);
(typeof array[i] === "function") ? array[i].apply(this, [ this ]) : console.log('Index [' + i + ']: Invalid [ Function Required ]') ;
};
};
上面的方法用于调用我放置在数组中的所有函数,如下所示:
this.callPolyfills([
self.polyfillize([
{
test : [Modernizr.localstorage, Modernizr.sessionstorage],
polyfill : [self.polyfills_url.storage_polyfill_url]
},
{
test : [Modernizr.json],
polyfill : [self.polyfills_url.json_polyfill_url]
}
]),
self.prettifyCode(self.prettify, self.libraries_url.google_code_prettyfier.css, self.libraries_url.google_code_prettyfier.js),
self.consoleAvoidError()
]);
对其中的所有未知变量进行抽象,我想看看我在该数组中调用的内容是否实际上是一个函数,因为我现在已经在尝试检查该callPolyfills
方法。但它失败了,因为它undefined
每次都返回,即使它是一个函数。