2006-03-01から1ヶ月間の記事一覧

prototype.js のクラス拡張: 仕様変更

prototype.js の Enumerable を自分のクラスで利用しようと思ったところ、幾つか問題にぶつかったため、以下の点を修正します。 include メソッドの名前変更 Mixin のための include メソッドが Enumerable のメソッドとカブることには元々気付いていました…

"Integrates Bloglines with Hatena Bookmark"

Bloglines の記事をはてなブックマークに登録する Greasemonkey スクリプトが、Firefox 1.5 + Greasemonkey 0.6.4 で動作しない旨のお話を頂きましたので、僭越ながらパッチを書いてみました。 --- bloglines.hatenabookmark.user.js~ 2006-03-27 13:50:40.0…

prototype.js と「プロトタイプ」

これまで私が prototype.js の拡張を行ってきた中で、JavaScript という言語に対する姿勢について明確に述べたことは無かったかも知れません (英語版では少し触れたんですが)。なので、いささか唐突ですが、ここで改めて (かつ少々乱暴に) 表してみようと思…

Bloglines のクリップをはてなブックマークで管理

Update [20060317]: Mozilla および Opera で動作する (はずの) バージョンを書きました。IE 版も、ちょっとした不具合がありましたので修正しました。 Bloglines ユーザーの方は "Clippings" という機能を便利に使ってらっしゃるでしょうか?正直、使いにく…

メソッドをプライベート化する実験

私が prototype.js に基づいた OO プログラミングをしていて度々思うのが、メソッドをプライベートにする方法が無いものだろうか、ということです。オーソドックスな、function 文を使用するクラス定義方法であれば、以下の様に関数を "this" と関連付けない…

Mozilla 系で arguments.caller が非推奨となっていた件

JavaScript 1.3 で arguments の caller プロパティーが非推奨とされていたことを知りました: http://docs.sun.com/source/816-6408-10/function.htm http://www.interq.or.jp/student/exeal/dss/ref/jscript/object/arguments.html現在の 1.5 では利用も出…

Singleton Pattern

昨日ご紹介した新たなクラス定義の手法を適用して、id:reinyannyan:20051015:1129356763 の Singleton Pattern の実装をアップデートしてみましょう。今回も prototype.js を利用した形です。シングルトン・クラス作成メソッド: Class.singleton = function …

prototype.js の Class 拡張試案について (仕様変更案)

Class.abstract と Class.concrete を統一すべきか id:reinyannyan:20051028:p1 等で Class.abstract() と Class.concrete() というクラス作成メソッドを提案しました。prototype.js で、抽象クラスを定義するのに空関数を使っているのがちょっと格好悪いな…

関数の実行を遅らせる (OO 的に)

関数を遅れて実行させたいなと思うことがたまにありますので、prototype.js にある bind メソッド*1に習って、再利用可能な形にしてみました: Function.prototype.delay = function (delay) { window.setTimeout(this, (delay * 1000)); };(最初に bind の実…

Ruby の kind_of? の実装

前の記事でさりげなく登場していたこの行 if (!comd.kind_of(Command.Abstract))について解説いたしましょう。Ruby には kind_of? というメソッドがあり、オブジェクトが、任意のクラスまたはそのサブクラスのインスタンスかどうかを調べます。"?" こそ付け…

Strategy Pattern ~ mixin を利用した

Command Pattern の話の続きです。最初にこのコマンド処理の仕組みを作った時、私はジョブ処理の方式として「キュー」を用いました。人の行列のイメージですね。最も長く待ったものが最初に処理されるという方式です。これでしばらくは満足だったんですが、…

prototype.js の Class 拡張試案について (コード修正)

リンクだけ張らせて頂きます。記事 コード古い記事は rss に反映されないんですね…?