前回(だいぶ前ですなー)、__proto__チェーンを操作することにより継承を実現する方法を紹介しました。しかし、この方法には問題があります。今回は、この問題点を指摘して代替案について説明しましょう。 今回の内容: __proto__を使った継承の問題点:これじゃ使えんぞ そうか、newを使えばいいのだ 親知らず? いや、おばさん子 まだ問題がある さらに他にも問題がある 特定インスタンスはトレイツじゃないしぃ 今回のまとめ ハブエントリー(全体目次) 前回 - クラスもどきの継承もどき ●__proto__を使った継承の問題点:これじゃ使えんぞ JavaScriptのクラス(もどき)は、「コンスタラクタ関数+トレイツオブジェクト」で実現できます。トレイオブジェクトとはコンストラクタ関数のprototypeオブジェクトであり、インスタンスの__proto__オブジェクトでした。 この前提で
「JavaScriptには、クラスとその継承はないが、プロトタイプベースの継承をサポートしている」と、まー、これはよく言われる決まり文句です。がしかし、JavaScriptにおけるアレを継承と呼んでいいものかどうか? 「継承」といえば、多くの人が通常の継承、つまりクラスベースの継承をイメージするでしょうし、無意識に通常の継承とのアナロジーを追うことになるでしょう。これは危険だと思いますよ。 「プロトタイプ」とか「継承」という言葉から連想する常識的なイメージは全部捨てて、事実を白紙から眺めましょう。その事実とは、「JavaScriptには、実行時プロパティ検索のメカニズムがある」と、それだけです。 今回の内容: 「プロトタイプ」じゃ、なんのことだかわからない __proto__プロパティ、__proto__オブジェクト、__proto__チェーン __proto__チェーンを追いかけてみる
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く