トップページ > プログラム > 2014年12月02日 > OQmm7jB2

書き込み順位&時間帯一覧

6 位/213 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000200000300207



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
+ JavaScript の質問用スレッド vol.117 +
動的言語で大規模開発

書き込みレス一覧

+ JavaScript の質問用スレッド vol.117 +
308 :デフォルトの名無しさん[sage]:2014/12/02(火) 13:27:53.03 ID:OQmm7jB2
jQueryにはbindに相当するものとして、$.proxyっていうのが有るのだけれど、
なんでbindがproxyという名前なのか昔から疑問だった。
prototypejsではbindという名前なのに。

最近その謎が解けた。それは変数にthisを代入すればいいから
bindは不要であるという話にもつながっていて、

例えば、>>293みたいなものは、bindで渡すべきじゃない。
なぜなら、getXは普通に考えると自分自身のxを返すという仕様であり、
外部から指定されるべきものじゃないから。

そして外部から指定するもの。例えばあるクラスにイベントハンドラを
設定するみたいなコード。そのイベントハンドラに匿名関数を渡すのではなく、
別のオブジェクトの関数を渡す時に、$.proxyを使ってオブジェクトをバインドする。
(普通は関数だけじゃなくてオブジェクトも指定する必要があるから)

バインドしたい時というのは、このように別のオブジェクトの関数への
プロキシとして使うことがほとんどだから$.proxyという名前なんだ。
+ JavaScript の質問用スレッド vol.117 +
309 :デフォルトの名無しさん[sage]:2014/12/02(火) 13:34:01.31 ID:OQmm7jB2
少し言い換えると、

「bindがthisを結びつけた新しい関数を生成」までが仕事の範囲なのに対して
「proxyはthisを結びつけた関数に処理を移譲」までが仕事の範囲というニュアンス
+ JavaScript の質問用スレッド vol.117 +
315 :デフォルトの名無しさん[sage]:2014/12/02(火) 19:46:36.36 ID:OQmm7jB2
そういや、昔のブラウザ(IE5あたり?)はcallもapplyもなかったんだよな。
その時代にクロスブラウザやってたから、callとapply相当を
独自実装したことがあるよ。

どうやって実装したか、考えてみると面白いかもしれないね。
動的言語で大規模開発
661 :デフォルトの名無しさん[sage]:2014/12/02(火) 19:47:59.90 ID:OQmm7jB2
>>659
凄いけど役に立たないなw
動的言語で大規模開発
662 :デフォルトの名無しさん[sage]:2014/12/02(火) 19:49:38.18 ID:OQmm7jB2
なんで役に立たないかというと

実行中のメソッドコンテクストのスタックをトレースして任意の時点まで遡り、
その時の内部状態を観察してソースコードを修正、コンパイルした後、
そのままリジュームして処理を継続したらバグで変な状態になった。
また止めて変な状態を直して、正しい所に移動させて続けることも可能だけど

最初からやり直したほうが早い。
動的言語で大規模開発
664 :デフォルトの名無しさん[sage]:2014/12/02(火) 22:38:50.95 ID:OQmm7jB2
人間はミスするとう前提の話をしてるんだが?
スキルや能力とは関係ない。

ミスしないようなすごい人しか使えない道具ではなく、
ミスしてもすぐにリカバリできる仕組みを作るほうが重要。

ということで静的型付け言語はそうなってるって話なんだよ。
動的言語で大規模開発
666 :デフォルトの名無しさん[sage]:2014/12/02(火) 22:52:44.71 ID:OQmm7jB2
一体何の機能が制限されているというのか?
タイプ数が少し増えるというのならわかる。
制限されているという機能の名前を聞いたことがないし、
どうでも良い機能のために、動的型付け言語を使うという話しか聞かない


静的型付け言語で出来ないことはないし、(たとえば、C言語は静的型付け言語)
多くのことが動的型付け言語よりも便利に行える。

デメリットはほんの少しタイプ量が増えるだけ


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。