オブジェクト指向 JavaScriptの原則を購入しました。

一通り流し読みしましたが、prototypeとconstructorのところがいまいち理解できてない。
もう一周します。

重要なことをここにメモしていきます。

1章

・コンストラクタ
コンストラクタとは、new演算子を使用してオブジェクトを生成する関数です。(p10)
コンストラクタ関数は大文字で始まる名前を与える。
ビルトインオブジェクト
Object,Array,Date,Error,Function

・オブジェクトリテラル
new演算子とオブジェクトコンストラクタを明示的に使用することなく参照型の値を生成できる記法。

var book = {
  name:"ぼっちゃん"
  year:1999
};

var book = new Object();
book.name = "ぼっちゃん";
book.year = "1999";

は同じ。

関数リテラル
Functionコンストラクタがあるので関数を作成するときはnewを使えるが、非推奨らしい。
なので関数リテラルを使う。

function reflect(value){
  return value;
}

var reflect = new Function("value", "return values;");

は同じ。

参照型のデータを判定する。(そのインスタンスのコンストラクタが何かを判定する)
インスタンス instanceof コンストラクタ
コンストラクタのインスタンスである場合はtrueを返します。

全てのオブジェクトはObjectのインスタンスです。(p20)
ArrayもObjectを継承している。
※Obeject.create(null)を使えば、Object.prototypeを継承しないオブジェクトを生成できます。

2章

関数宣言 vs 関数式
JavaScriptには2種類の関数リテラルが存在します。関数宣言と関数式。
関数式は通常、変数やオブジェクトのプロパティ(メソッド)として参照されます。

関数式の例

Field.create = function(){
    var field = new Field();
    field.init();//フィールド初期化処理(イニシャライザ)
    return field;
};

Field.createに参照されてる。

thisオブジェクト

function sayNameForAll(){
  console.log(this.name);
}

var person1 = {
  name = "Tanaka",
  sayName: sayNameForAll
};

var name = "Suzuki";

person1.sayName();
>>Tanaka
sayNameForAll();
>>Suzuki

関数がもっているメソッド
関数はオブジェクトなので、関数もメソッドをもつことができる。
関数はFunctionコンストラクタのインスタンス。
call(),apply(),bind()メソッドをもっている。

関数.call(オブジェクト,引数);
sayNameForAll.call(person1,”引数”)

スポンサーリンク
RESAD
RESAD

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
RESAD