Kokudoriing

技術系与太話ブログ

JavaScript

Gavia(ActiveRecor for IndexedDB) v0.1.0 リリース

半年以上前に作ったActiveRecordなIndexedDBライブラリをちょこちょこ手直ししてみました。 https://github.com/kokudori/gavia/ http://kokudori.github.io/gavia/ 例によってbower install gaviaで入ります。 一番の変更点は今までjQueryDeferredを使うた…

JSFuckから理解するECMAScriptの仕様

JSFuckとは JSFuckは任意のJavaScriptプログラムを[, ], (, ), !, +からなる6文字で置き換える試みです。 意味分かんないですね、サンプルを見てみましょう。 alert(1) 上記のJavaScriptコードと [][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+…

IndexedDBをActiveRecord風に使えるライブラリを作ってみた

タイトルまんまです。 ドキュメントやら詳しくはhttp://kokudori.github.io/gavia/まで。 インストールはbower使うと簡単です。 bower install gavia そもそもIndexedDBはそれはもう非同期非同期した何かなのです。 その上、標準ライブラリはコールバックパ…

npmとpackage.json使い方

node.jsと言えばnpmですよ。 それくらいnpm素敵です。RubyのBundlerとかvimのVundleとかみたく素敵です。 まずはnpmの作法というか、思想というか。 いや、npm含めnode.js初心者なので間違ってたらこっそり教えていただければ幸いです。。 npmはローカルイン…

Grunt0.4.xでのGruntプラグインの作り方

結構前にGrunt.jsがバージョン0.4.xになりました。 ・・・、マイナーバージョンアップというか実質メジャーバージョンアップというか。 かなり変わったのでプラグイン作成とGrunt自体の使い方について備忘録までに。 かなり大きな変更として、Grunt.js本体と…

ファイルを連結して任意の変数を公開できるようにするGruntプラグイン「grunt-encase」を作ってみた

JavaScript(特にブラウザ環境)は名前空間やらの概念がないのでファイル分割が大変苦しい。 グローバル汚染を考えて各ファイルを匿名関数(即時実行パターン)にいちいち入れないとダメ。 でもそうするとやたらテストするのが辛くなります。hogehoge.js (functi…

スコープチェーンについて(2回目)

現在「ハイパフォーマンスJavaScript」読んでるわけですが。 ハイパフォーマンスJavaScript作者: Nicholas C. Zakas,水野貴明出版社/メーカー: オライリージャパン発売日: 2011/03/20メディア: 大型本購入: 9人 クリック: 1,176回この商品を含むブログ (30件…

jQueryのカスタムイベントはどこにバインドさせるべきか

例えばサイドバーのアニメーションを促すカスタムイベントを使う場合。 サイドバーにはいろんな機能があるとして、専門のサイドバーオブジェクトを作ったとする。でも $('#sidebar').on('click', function() { /* */ }) とすると保守がしんどい。この場合、$…

undefined リテラルと NaN リテラル

undefined は変数宣言(初期化なし)時の規定値です。 NaN は 0 除算時の結果等、常用数学として不適切な値を意味します。 それぞれ undefined、NaN というリテラル表記が ありません。 console.log(undefined); // undefined console.log(NaN); // NaN あれ、…

スコープチェーンとは何か。そもそもスコープとは何か

2012/09/28 追記 すいません、この記事かなり間違った情報を載せてしまってます。 詳しくはこちらを参照ください。 JavaScript には大きく4つの鬼門が存在します。 頑張りすぎる暗黙の型変換。 馴染みのない prototype チェーン。 やたら参照が変わる this…

location.href と location.assign(url)

現在の表示しているページを URL に紐付いたページに移動したい場合。 location.href プロパティに URL 文字列を代入すればOKです。 ちなみに location オブジェクトに直接 URL 文字列を代入しても同じ結果になります。 ただ、location.assign メソッドを使…

配列っぽそうで配列っぽくない少し配列っぽいオブジェクト

かなり今さらなネタ。 食べたいと思いつつまだ食べたことないのでいつか食べたいです。 桃屋 辛そうで辛くない少し辛いラー油 110g出版社/メーカー: 桃屋メディア: 食品&飲料購入: 14人 クリック: 52回この商品を含むブログ (40件) を見る本題。 JavaScript …

jQueryとイベントドリブンと私

jQueryと言えばjQuery.DeferredとjQuery.CallbacksとjQuery.Eventですよね。 おまけにDOM操作も出来るライブラリ。恐らくjQueryバリバリ書いてらっしゃる方々は何を今更といった話しなんでしょうが、 jQuery初心者の自分にとってはjQueryのイベントドリブン…

typeof やら instanceof やら toString.apply やら

jQuery や underscore.js では isFunction とか isArray とかの型判定関数的なものがあります。 え?ライブラリ使わないとJavaScriptはろくに型すら判別できないの?半分YESで半分NO。 そもそも typeof とはなんぞやというお話し。よく typeof と instanceof…

あったらいいんじゃないかと思うjQuery.fn達

jQuery のプラグインってどうしても UI 周りが多いですね。 UI に依存しないプラグインをまとめてるサイトとかあったりしないですかね。 $.fn.toString = function() { var isAllClonable = this.filter(function() { return !this.cloneNode; }).length > 0…

jQuery.fn.bind, unbind, live, die, delegate, undelegate を使ってはいけない

$.fn.on, $.fn.off を使いましょう。 on と off はそれらを完全に置き換えるAPI。 タイピングも少なく済むのでありがたいですね。 on と off についてはこちらあたりで詳しく解説されてます。でも既存のAPIでうまく行ってるのに on と off を使うメリットっ…