hack のためのネタ帳, etc,,,

オブジェクトの定義

{key0: value0, key1: value1, ..., keyN: valueN}

末尾が「,」で終わっていると IE や Opera ではエラーになるので注意(IE8 では通る模様)。
{key0: value0, key1: value1, ..., keyN: valueN, } // これはエラー

トラバース

obj の要素を総なめするには for in を使うと良い。
for (let k in obj) {
  // obj[k]
}
prototype chain を traverse させたくない場合は hasOwnProperty() メソッドを使って以下のようにすると良い。
for (let k in obj) if (obj.hasOwnProperty(k)) {
  // obj[k]
}

Collection の場合は Array の反復メソッド(iteration method) を call や apply で流用すると良い。
[].map.call(obj, fnc);

毎回 [].〜.call って書くのが面倒なら collection の prototype に Array の反復メソッドを放り込んどくという手も。
NodeList.prototype.map = [].map;
document.querySelectorAll(selector).map(fnc);

クラス毎個別に拡張するのすら面倒なら root である Object の prototype に放り込んでしまうという手も。
Object.prototype.map = [].map;
document.querySelectorAll(selector).map(fnc);
ただし Namespace 汚染する気がするので、ちょっと邪悪かも?


コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

フリーエリア

管理人/副管理人のみ編集できます