使っている 3.0 のホイールがまわらなくなったのでサポートが送ってくれる ことになった IntelliMouse Explorer 4.0 が到着した。
確かに、ホイールがとてもやわらかい。 ちょっとまわしただけで反応する。
ドキュメントのスクロールには悪くないと思うけど、 マウスホイールで何かを切り替えるようなものにはちょっとつらいなぁ。 タブブラウザのタブ切り替えとか。
サイドボタンが前作より上の方になってしまったのもちょっと違和感があるが、 これは慣れれば何とかなる範囲か。
簡単に使った感じでは、3.0 の方がよかったように思う。
arino氏の臨時日記より。
function hogeConstructor(a) { this.a = a; } hogeConstructor.prototype.hogeMethod = hogeMethod(); function hogeMethod() { alert(this.a); }
function hogeConstructor(a) { this.a = a; this.hogeMethod = function() { alert(this.a) }; }
function hogeConstructor(a) { this.hogeMethod = function() { alert(a) }; }
上から順に(1),(2),(3)とします。
JavaScriptに触ってまだ日も浅く、arino氏の主張をいまひとつちゃんと理解できていない点もあるのですが、 どうやら特に(1)の手法を批判していて、(3)のように書くべきだということのようです。
scopeチェインにあれば十分かthisに入ってなきゃいけないかの違い
というのは、(1)や(2)だと h = new hogeConstructor('hoge') とやったときに h.a が見えてしまうのに対し (3) だと a は見えないということなので、確かに (3) の手法の方がよさそうです。
自分は、過去の日記を見れば分かるように (1) のスタイルで書いてきてましたが、 (2) や (3) でなく (1) を選んだのは、h.hasOwnProperty('hogeMethod') が false になるのが (1) だけだからというのが理由でした。 (Effective JavaScript - 3.2 コンストラクタとプロトタイプ に、String もそうなんだから、と書いてあったので、JavaScript ではそういうものだと思って。それ以外のサイトでも見たような気がする)
しかし改めて考えてみると、hasOwnProperty() は false にならないといけないものなのかなぁ。 true になったときの具体的な害はあるのだろうか。
3行で終わる事を8行かけていて、理由は実害があるかどうか分からない、というのも不思議な状況だと思います。<br>(JS界隈は実際不思議な常識が出回っていますが)
実害があるという確信は持てなかったのですが、<br>実害がないという確信も持てなかったので、<br>だったらネイティブオブジェクトと同じ作法の方が安全なのかなぁという感じでした。<br><br>でも、あんまり害もなさそうなんで(3)が簡単でよさそうに思えてきました。