次のコード例があります。
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
でも関数なのに毎回返すので失敗。