2005/09/01
実践 prototype.js [2]
同じ .js ファイルの中で宣言の順番に気を使う。後方参照できない(?)
この件は、id:kambaraと話していて解決というか納得した。
var Hoge = Class.create(); Hoge.prototype = (new HogeBase).extend ( {
このようにクラスを”宣言”しているつもりになるのだが、良く考えるとこれは動的に上から下に実行されているため起こる問題だ。
JavaScript自身は後方参照できるが、prototype.js の仕組み上後方参照できないということ。
$関数
document.getElementByIdの代わりに使う。
厳密には
$('hoge') だと たとえば <div id='hoge'> のオブジェクトが返る。
$('hoge', 'hige') だと、'hoge', 'hige'のidを持つオブジェクトの配列が返る。
しかし$も関数名に使えるだな。
イベントハンドラ内で this を参照したい
2つ方法があるらしい
(1)self作戦
hoge : function { // do something }, some : function() { var element = $('elementname'); var self = this; element.onclick = function() { self.hoge(); // thisを参照 } }
hoge : function { // do something }, some : function() { var element = $('elementname'); element.onlick = this.handler.bind(this); // bind }, handler : function() { this.hoge(); // thisを参照 }
この bind が曲者で分かりづらいです。こういうときは prototype.js のコードを見たほうが早い。
Function.prototype.bind = function(object) { var __method = this; return function() { __method.apply(object, arguments); } }
実は(2)は(1)をラップしただけということがわかる。
(3)fladdict.netの中の人から
http://www.fladdict.net/blog-jp/archives/2005/09/this.php
ちょっと勉強中。
スコープの話(JavaScript全般)
id:kambaraに教えてもらったテクニック。無名関数オブジェクトで囲む。
(function() {
var Base = Class.create();
Base.prototype = {
}
})()
JavaScript & DHTMLクックブック―Webエキスパート必携テクニック集
- 作者: ダニーグッドマン,Danny Goodman,村上列
- 出版社/メーカー: オライリージャパン
- 発売日: 2004/01
- メディア: 単行本
- 購入: 2人 クリック: 34回
- この商品を含むブログ (64件) を見る
Permalink | コメント(3) | トラックバック(0) | 15:23
![]()
トラックバック - http://d.hatena.ne.jp/higepon/20050901/1125555797
リンク元
- 232 http://secure.ddo.jp/~kaku/tdiary/
- 167 http://mona.sourceforge.jp/
- 140 http://www.hatena.ne.jp/diary
- 86 http://www.fladdict.net/blog-jp/archives/2005/09/this.php
- 49 http://www.fladdict.net/blog-jp/
- 38 http://www.monaos.org/
- 37 http://members.jcom.home.ne.jp/sarasiru/
- 36 http://www.monaos.org/index.html
- 28 http://feedbringer.net/feed
- 23 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rls=GGLD,GGLD:2005-25,GGLD:ja&q=AJAX+サンプル
Profile
Mona OS - Free operating system
Contact
Search
Books
Articles
- 過去のおすすめ本一覧
- ハッカー養成塾:ハッカーへの遠回り
- 関数型言語の勉強の連載
- 一人読書会
- Ubuntu 7.10 Gutsy インストール
- Ubuntu 7.10 Gutsyへアップグレード
- Ubuntu 6.06 LTSインストール
- Ubuntu 6.10 Edgy インストール
- 計算機プログラムの構造と解釈
- Modern C++ Design読書会
- はてな退職のお知らせ
- プログラマとして最低限身につけるべき知識
Reading Gauche
Books
Swimming(m)
PV
21604111


