Museumソフトウェアエンジニアのブログ。スコープは呼び出した関数の文脈によって決定される。返すように思えるが、実際には異なる。渡している無名関数が呼び出された際のレシーバに結合される。この場合、レシーバは指定されていないのでグローバルオブジェクトに束縛される。メソッドは第二引数で第一引数の関数のレシーバを明示的に指定することが出来る。束縛したラッパー関数を与えるという方法がある。継承を実装するには二つの作業が必要である。レシーバーとして束縛し、スーパークラスのコンストラクタを呼び出すサブクラスのプロトタイプオブジェクトに、スーパークラスのプロトタイプオブジェクトを保持するオブジェクトを設定するコードにすると以下の通り。"superMethod"項目39:スーパークラスのプロパティ名は、決して再利用しないスーパークラスのプロパティ名と同様のプロパティ名を持つプロパティをサブクラスで再利用しないこと。スーパークラスのプロパティは一般的にはプライベートではないので、上書きしてしまい、バグの温床になりやすい。重要なクラスが含まれている。これらをサブクラスで拡張したくなるが、これは避けた方が良い。実は、これらのクラス定義には特別な振る舞いが含まれていて正しくサブクラスを書くことが出来ないからだ。いうクラスの種類を示す特別なタグが存在する。特別な値を保持していて、これに応じて特別な処理が行われるように実装されているのだ。オブジェクトについては、「そのオブジェクトでインデックスを付けられているプロパティの数と同期する」という特別な動作が定義されている。プロパティの特別な動作ができないのである。呼び出すことで調べることができる。ついてもほぼ同様の事情があるため、これらのクラスから継承するのは避けるべきである。比べ、内部構造を露出する機構を多く備えている。プロパティを列挙する機構がある(Object.prototype.hasOwnProperty)プロトタイプチェーンをたどる機構がある(Object.getPrototypeOf)プライベートプロパティがないこれらをやみくもに使って実装の詳細に依存したプログラムを書くのはやめよう。ライブラリにドキュメント化されていない実装に依存したプログラムを書くと、実装が変更された際に痛い目をみる。プロトタイプチェーンをたどる機構があるが、さらに既存クラスへのプロトタイプオブジェクトに対するプロパティの追加が可能である。使えるようになったぞ!と喜んではいけない。やって自分の責務外のオブジェクトにプロパティを追加することをモンキーパッチング(Monkey-Patching)と呼ぶ。モンキーパッチングしているかもしれない。最新の処理系に追加されているような便利な関数を過去の処理系に対して追加するポリフィル(polyfill)と呼ばれる用途では、このモンキーパッチが正当化される。ポリフィルする場合などである。}また、ポリフィルする場合には文書化し、場合によってユーザーにポリフィルするかを洗濯させる手法を採るのも効果的。手習い』はじめました。Museumスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。