2017年01月09日

[書評]オブジェクト指向javascriptの原則 2章を読んだ

オブジェクト指向JavaScriptの原則

新品価格
¥2,592から
(2017/1/9 16:57時点)



[書評]オブジェクト指向javascriptの原則 1章を読んだ
の続編

2章は関数。
以下、2章

・巻き上げ
関数宣言と関数式では意味が違い
a()
function a(){}
は巻き上げられるが
以下は当然エラー
a()
a = function(){}


・sort
デフォルトは文字列比較
数字比較したい場合は無名関数を渡そう
sort(function(first, second)) {
fisrt - second;
});


・arguments
引数は全部これでとれる
任意の引数等だと使える子だけど可読性落ちるよ


・引数の長さ
function a(value){}
console.log(a.lenght);
は、1
function b(){}
console.log(b.lenght);
は、0


・オーバーロード
jsだとオーバーロードできないから
arguments使えばできるよねってhackもある
typeofやinstanceofで出しわけもできるよね


・this
thisを使うと動的に内容が変わるよ
function sayNameForAll(){
console.log(this.name);
}
var person1={
name: "person1",
say:sayNameForAll
};
var person2={
name: "person2",
say:sayNameForAll
};
var name ="person3";
person1.say(); //person1
person2.say(); //perons2
sayNemeForAll(); //person3


・call
thisを動的に変えてみよう
callの第一引数にthisを渡せる
function sayCall(label) {
console.log(label + ":" + this.name);
}

var person1 = {
name : "person1"
}
var person2 = {
name : "person2"
}
sayCall.call(person1, "a"); //a:person1
sayCall.call(person2, "b"); //b:person2


・apply
applyはcallで配列を渡す
sayCall.apply(person1, ["a"]);
sayCall.apply(person2, ["b"]);


・bind
ECMA5で追加されたthisが変わった関数を返す
var bind1 = sayCall.bind(person1);
bind1("label1"); //label1:person1
var bind2 = sayCall.bind(person1, "label2");
bind2(); //label2:person2
bind2("c");//label2:person2。cはたぶん第二引数


本章も大変ためになりました。
call apply bindをいけてる感じに使いこなせるようにならないと
そろそろいけないなぁーって感じです。
続く
タグ:javascript
posted by マスタカ at 16:59 | Comment(0) | TrackBack(0) | | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック