読者です 読者をやめる 読者になる 読者になる

破棄されたブログ

このブログは破棄されました。

JavaScript

カリー化による関数の委譲とプライベート変数へのアクセス

複数のオブジェクトで同一の関数を継承ではなく委譲として再利用したい。 ただ、その関数がスコープチェインを通してプライベート変数へのアクセスをしていると関数をそのまま使いまわすことができない。そこで、パラメータとしてアクセスしたいプライベート…

「JavaScript アプリケーションのメモリー・リークを理解する」を読んだのでメモ

今更ながら読んだ。思い違いとかもあったりで色々とメモ。 JavaScript アプリケーションのメモリー・リークを理解する まずは定義から メモリーリークというのは、不要になったオブジェクトが存在し続けること。 JavaScript におけるオブジェクトのライフサ…

iPhone でブラウザバックされたときにイベントを再設定する

iPhone でページ遷移した際にキャシュが使用されると、イベントが全部死んでいる。 なんで、ページ読み込み時に設定したイベントだけでも再設定してやろうと思っていろいろ調べたものの、大人の事情で onpageshow イベントが発火しない環境。 しょうがないの…

JavaScript の即時実行関数において引数で変数を渡す意味とは

最近 JavaScript のコード書いたり読んだりしててよくわからんかったこと。 即時実行関数の引数の意味。書いてみたコードの通り、スコープチェーンからクロージャ外の変数を参照できるから、直接参照した場合も引数で渡した場合も同じ値を示す。 var hoge = …

JavaScript のグローバル汚染防止策について

なんか微妙な記事を見かけて、どうせ何年も前の記事だろうってことでスルーしようかと思ったんだけど、よくみたら 2013 年の記事ですごく悲しい気持ちになったんでメモ。 問題の記事 JavaScriptでグローバル変数を減らす方法 | design programming こぶたの…

PHP のクロージャ

クロージャといえば JS !!!!! ってくらい JS のクロージャしか知らんかったので、 PHP のクロージャで JS みたいなことできるのかやってみた。まずは、JavaScript のコード。当たり前に、期待通りの挙動。 function getFn(arg) { var inner_variable = …

レキシカルスコープ

顕在化する Perl リスクを横目に、どこのサーバにも入っててシェルスクリプトより強力だし PHP みたいにカスじゃないって理由で Perl のイントロダクション perlintro を読んでたら、変数スコープのところでちょっと気になる記述があった。 my creates lexic…

テスト駆動 JavaScript

テスト駆動JavaScript作者: Christian Johansen,長尾高弘出版社/メーカー: アスキー・メディアワークス発売日: 2011/11/25メディア: 大型本購入: 19人 クリック: 329回この商品を含むブログを見る 昨年の秋頃からたらたら読んでた「テスト駆動 JavaScript」 …

PHP の論理演算子と代入式

JavaScript は論理演算子でこういうことができるし、よく使う。 演算子の左が false と評価され、右が true と評価されれば、true ではなく右側の値を返すってやつ。機能検出とかでよく見かけるアレ。 var someVar = false || 'someValue'; // return 'someV…

postMessage! そういうものもあるのか

window.postMessage は、安全にクロスドメイン通信を可能にするためのメソッドです。通常、異なった複数のページでのスクリプトはそれらが実行されたページが同じプロトコル(たいてい http)、ポート番号(http のデフォルトは 80)、ホスト(両方のページ…

指定した HTML 要素の子要素に対して再帰的に処理を行う。

指定した要素の子要素に対して再帰的に処理を行う。jQuery 等ライブラリ非依存。 深度 6, 要素数 160 程度のページで 0.2 秒弱かかったんで、実用性は疑問。 /** * HTML 要素を再帰的に処理 * @param HTMLElement elm HTML 要素 */ function processHTMLElem…

jQuery で取得したオブジェクトが親ノードの last-child であるか判定する

備忘録的に。もともと関数じゃなかったのを関数として切り出してきたんで、型チェックとかはしてない。 jQuery を使っていなければもっと素直に書ける気がする。 function isLastChild(obj) { obj = $(obj); if (obj.parent().children(":last").get(0) === …