tanish-kr's learning log

Learning output log

JavaScript

JavaScriptのオブジェクト指向

  • 継承・ポリモーフィズム・カプセル化のOOP「大三元」がない
  • すべてがオブジェクトでない
  • プロトタイプベースなのにクラスというのはおかしい
var str = new String;
str.split; //=>function
str.split();
  • 変数strが刺すオブジェクトに対してsplitプロパティを参照する
  • strオブジェクトはsplitプロパティを保持していないので、Stringのプロトタイプを参照する
  • プロトタイプが保持するsplitプロパティの値(Functionオブジェクト)を返す
  • カッコが指定されているので、返された値を実行する

プロトタイプチェーン

プロトタイプは、クラス構造に基づいた木構造となっており、プロパティが存在しない場合は、参照しているプロトタイプをルートに向かって順番に探していく。この一連のプロトタイプのつながりを「プロトタイプチェーン」と呼ぶ

チェーン 発動タイミング 参照時に最後まで見つからない場合 更新時に最後まで見つからない場合
スコープチェーン 発動の参照と更新 例外を発生する グローバルオブジェクトに代入する
プロトタイプチェーン プロパティの参照 undefinedを返す たどられない。対象のプロパティとなる