Mach3.laBlog

jQuery.class.jsのバグ修正とconsole.logのお話

この記事は賞味期限切れです。(更新から1年が経過しています)

jQueryでPrototype.js風のクラス定義をしてみる
で公開していたスクリプトで見つかった不具合が、意外と盲点だったので自戒として記録。
ただ単純にチェック不足なだけでしたが…悔しい。

jQury.class.js

ソース

mach3’s js-jquery-class at master – GitHub

あるの?ないの?console.log

引っかかったのは、インスタンスにlogメソッドを生やしている部分。
console.logの有無で分岐をした…つもりだったんですが、

if( $.isFunction( console.log ) ){ ... }

当たり前なのですが、
console.logが、というかconsoleがなければここで処理は止まってしまいます…。
なんでこんなのに気付かなかったのかというと、IE8で処理が止まらなかったから。
なぜなら、consoleもconsole.logも有るから!(実は知らなかったーー!!)

そんなわけで、条件を修正。
なんかもうちょっとスマートに書きたいですが…

typeof(console)!=="undefined" && typeof(console.log)!=="undefined"

IE8の開発者ツールをちゃんと使って無かったって事ですね。反省。
でも次からは楽になりますね!

追記 : 2013/10/13

実は、これでいいですよね。

!! window.console && !! window.console.log

この不具合、特別必要なかったオマケ機能だった事もあって、結構悔しいです…

コメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

うりん6c846fc7063e956a232ae170ee5dea80
<p>if( console &amp;&amp; $.isFunction( console.log ) ) { ...
でも大丈夫ではないですか?</p>