ブックマークしました ここにツイート内容が記載されます https://b.hatena.ne.jp/URLはspanで囲んでください Twitterで共有

しょうこりもなくJavaScript。([2005-08-08に追記]:コメントも読んでくださいね。) JavaScriptによるオブジェクト指向プログラミングに関しては、例えば、(古い記事ですが)石井勝さんによる解説などがあります。基本は、コンストラクタ関数を定義することをクラス定義とみなすことです。ちなみに、コンストラクタ関数Foo()は普通の関数に過ぎません。new Foo();の形で呼び出されると、JavaScript言語処理系が呼び出しオブジェクト(昨日の投稿を参照)のthis変数に新しく作ったプレーンな(何の特徴もない白紙の)オブジェクトをセットしてくれます。それだけのこと。 さて、上記記事によれば、クラスFooのメソッドは、いったん _Foo_doSomethingという大域関数として定義して、コンストラクタ内でthisにセットするようになっています(下を参照)。([追記]:
昨日に続いてJavaScriptネタ。 JavaScriptは誰でもすぐ使えるように工夫されている -- これは嘘ではないでしょうが、最初の敷居が低いから「やさしい」とは言えないようです。僕自身と少数の事例からは、C、C++、Javaなどの“普通の”言語に慣れていても、JavaScriptには違和感・抵抗感を感じて、食わず嫌いで手を出さないとか、かじったが放り投げるとか、… どうも「むずかしい」みたい。 実行環境が主にブラウザというのがまず異質ですが、この点は置いといて、言語仕様と言語処理系の観点から、JavaScriptの「むずかしさ」(と魅力)を述べたいと思います。 ●徹底的にオブジェクト的 JavaScritは、クラス、継承、情報隠蔽機構などを持たないので、まがい物の、あるいは中途半端なオブジェクト指向言語と思われているようです。そもそも、「何がオブジェクト指向か」って議論が不毛だか
最近、JavaScript人気がすごいなー。1年前には(少なくとも僕は)想像もできなかった事態です。 「ブラウザのなかで動く奇妙な言語」という印象しか抱いてなかったのですが、ナカナカのもんみたいですね。遅ればせながら実験。ブラウザだと試行錯誤やデバッグに向かないから、Rhinoの対話的環境でやってみました。 まずは、ラムダ式風の関数定義、可変(個数)引数、高階関数などの見本として関数totalを定義してみました。僕の意図としては、関数totalのプロファイル(型仕様)は: (number | number[]), (number -> number), (number -> boolean) → number これを言葉で説明すれば: 第1引数は、数値 または 数値の配列 第2引数は、1つの数値引数を取り数値を返す関数 第3引数は、1つの数値引数を取り真偽値を返す関数 戻り値は、数値 さら
最近はてなブックマークのホットエントリーで挙がっている以下のエントリがとても面白いです。 Effective JavaScript - Dynamic Scripting JavaScriptでオブジェクト指向のコードを書くときに必要な知識がとても分かりやすくまとまっています。 個人的に驚いたのは 引数 - デフォルト引数、正当性チェック、残余引数、オーバーロード クロージャ 辺りの話題です。 今まで書いたJavaScriptのコードをすべて書き直したくなりますw あとは最近個人的に気になるのは arinoさんが開発している、JScriptで動くシーケンス図エディタです。 こちら。 JScriptでもきっちりとテストコードを書こうという方針で、今後どうなっていくかが楽しみです。 また日記で書かれている↓もかなり同意です。 最近JavaScriptをいじってて思うのだが、これ程いろいろと気を
JavaScript とクロージャ JavaScript プログラミングはなかなかおもしろいよ、と知人に言ってみたところ、 全然信用されずに怪訝な顔をされる、という目に遭いました。 クロージャが使えて DOM ツリーにイベントハンドラを簡単に追加できるよ、と続けると多少は興味を持ってもらえるようなので、クロージャを使ったサンプルプログラムを書いてみました。 箱の中でマウスカーソルを適当に動かしてください。 このプログラムでは各セルの色の濃さをクロージャを使って保持しています。makeHandler という関数の depth という変数がそれです。クロージャを使うと、個々のイベントハンドラごとに独立した状態を簡単に持たせされるのがポイントです。 別にクロージャを使わなくてもいいようなプログラムですが (クロージャではなく DOM のエレメントに状態を持たせるとか)、こういう風にも書けるよ、と
Flashでに学ぶ非同期通信のノウハウのって感じのお話。JavaScriptでオブザーバパターンを用いて、イベントドリブンなコード(addEventListener等)をバリバリ書く方法です。 というかFlashで言うところの、mx.events.EventDispatcherクラスの自分なりの移植なわけですけど。 このEventDispatcherクラスを使うと、W3CのDOM3にそれなりに対応した、イベントモデルを自作のJavaScriptのオブジェクトに実装できます。これで素晴らしきイベントドリブンの世界が楽しめます。 function EventDispatcher(){} /** EventDispatcher.initialize( obj ) オブジェクトobjに、W3C DOM3互換のイベント通知機能を追加します。 これによりobjは、onLoad等のイベントを発行すること
一つ前のエントリの続き。 document.writeを使うデメリットは一個前に書いたとおり、jsファイルを置いてあるサーバーのレスポンスに引きずられてページの描画が遅くなる、ということなんだけど 広告にせよRSS貼り付けにせよ、どれもこれもdocument.writeで表示するHTMLを書き出すものばかりなので、むしろdocument.writeの方を書き換えてみることにした。 ビフォー http://la.ma.la/misc/js/feed2js_old.html アフター http://la.ma.la/misc/js/feed2js.html Feed2JSというサービスを使っている。 http://jade.mcli.dist.maricopa.edu/feed/ 本来は、Scriptタグの挿入位置にRSSやAtomフィードを貼り付けるサービスだ。前者が本来の使い方で、docu
多分わかる人にはわかると思うんだけど、わかんない人にはわかんないと思うので、誰かわかりやすく書き直してくれると助かるんだけどとりあえず書いておく。 例えば、GoogleAdsenseなんかで広告を挿入するには、外部ドメインに置いたJavaScriptを読み込んで使う。セキュリティ上の問題があるにもかかわらず外部ドメインのJavaScriptをそのドメインにあるかのように取り込めるのは、多分、そういう需要があるからだろう。 んで、そういうスクリプトの構成というのは大抵、scriptタグを挿入した位置に広告がdocument.writeを使って書き出される、というものだ。 しかしこの方法には問題があって、それはscriptがロードされて実行が完了するまでページのレンダリングが止まる、ということだ。jsファイルを受信するまでにかかる時間と、解釈と実行、document.writeでブラウザに出力
Higher Order JavaScript Higher-Order JavaScript A JavaScriptish companion to Mark-Jason Dominus's Higher-Order Perl http://hop.perl.plover.com/ MJD の Higher Order Perl の JavaScript 版クックブック。こいつはスゴイ! Higher-order Perl: A Guide To Program Transformationposted with amazlet at 05.05.13Mark Jason Dominus Morgan Kaufmann Pub (2005/05/30) 売り上げランキング: 160,660 近日発売 予約可 Amazon.co.jp で詳細を見る
[ update! 2007.12.14 ] 最新→ dynamicLoad関数でcharsetも指定できます [ update! 2007.10.14 ] Safariで文字化けしない方法追加 これでほぼフルクロスブラウザ化完了...なんというスローな...f^^;;。 [ update! 2004.6.21 ] bosan.netのjsが1年間も死んでいました...なんというスローな...f^^;;。 ついでにjsgt.orgにもjsを追加。 [ update! 2002.7.17 ] Moz n7 に対応修正しました( Thanx はぎさん、Shimonoさん )。 通常は外部jsファイルはページ構築後にロードできないが この関数は、たとえばPerlのrequireなど のように必要な時に呼び出して使えるようにするためのもの。 これによって、必要な最小限のソースだけを必要な時に ロー
日頃より楽天のサービスをご利用いただきましてありがとうございます。 サービスをご利用いただいておりますところ大変申し訳ございませんが、現在、緊急メンテナンスを行わせていただいております。 お客様には、緊急のメンテナンスにより、ご迷惑をおかけしており、誠に申し訳ございません。 メンテナンスが終了次第、サービスを復旧いたしますので、 今しばらくお待ちいただけますよう、お願い申し上げます。
JavaScript でインクリメンタル 検索 (grepではない版) JavaScript でインクリメンタル grep 検索 のコードでは、検索に正規表現をそのまま使っています。正規表現を使うと pr.*f のような検索ができるのですが、一方で、 . や * や ( などを検索するにはそれぞれ \ でエスケープする必要が生じます。そのことを知らないと「(*.*) がなぜか検索できねー」と混乱することになります。 正規表現を使えてもうれしいことはそんなになさそうなので、gonzui では次のような関数を作って、メタ文字をエスケープしてから検索をかけるようにしました。 function quotemeta (string) { return string.replace(/(\W)/, "\\$1"); } quotemeta を使ったインクリメンタル検索のコードは次のようになります。 f
鬱陶しくなるだろうと思って、やらないつもりだったが、やってみると案外そうでもないかな、と思ったのでつけてみた。 JavaScript有効の場合に表示される(はずの)プルダウンメニュー、もしくは、右側のエントリ検索の結果にマウスオーバーするとエントリを読み込んで表示する。 blosxomの場合、各エントリがプレーンテキストで保存されているので、それを直接読み込んで表示している。サーバーに負担はほとんどかからない。画像を読み込むのと同程度。 エントリ一覧のロードは、今までIFRAMEを使っていたのをXMLHttpRequestを使うようにした。ついでに、カテゴリの記事件数集計を正確にしておいた。 XMLHttpRequestが使えない環境では、IFRAMEHttpRequestを使う。Opera7.54で動くことを確認。 http://ma.la/mirrorman/wiki.cgi/IFRA
ContentsDebugWindow注目をあびる優れた検索エンジンwemaNifty Corners++ Updateダウンロードniftypp.htmlniftypp2.css議論リンクsIFRNifty Corners++download使い方で、Buzz GameGiant StepsRuby on RailsGonzui CSS対応Gonzui JavaScript対応JavaScript at SourceForgeTinyMCEIE7HtmlAreaGoogle MapsAlphaImgFactoryAjaxversionの違い動的生成使いまわしがききそうな部分他の分析2005-03-18AjaxAjaxを説明する時に絶対使ってはいけない用語VML誰も知らないけど実はイケてる技術で、Mozilla SVGRealtimeWikiWikiばな Vol.4RastBreak it
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く