関数にオブジェクトを割り当てる

call apply を使用すると、任意のオブジェクトを関数に割り当てることができる

function MyFunc(name,age){
    this.name = name;
    this.age  = age;
}
function dispProp(){
    for(p in this){
        document.write(p+":"+this[p]);
    }
}
var obj = new MyFunc("taro",20);
dispProp.call(obj);
//=>age:20
//=>name:taro

※オブジェクトの要素一覧が表示される

これはオブジェクトに対して関数式をプロパティとして追加
(メソッドの追加)をした場合と似ている

function MyFunc(name,age){
    this.name = name;
    this.age  = age;
}

var obj = new MyFunc("taro",20);
obj.dispProp = function(){
    for(p in this){
        document.write(p+":"+this[p]);
    }
}
obj.dispProp();
//=>age:20
//=>name:taro

上記を実行すると追加したプロパティの
dispProp も要素一覧として表示される点が異なる