new演算子によるオブジェクト生成は関数呼び出しではないため、オブジェクト初期化の実行時には前述の全てを無視して、生成されるオブジェクトがthisになる。
var func = function(){ console.log(this); }; var obj = {}; obj.funcMethod = func; // パターン1. 通常の関数からnew var newObj = new func(); // ... thisは、newObj // パターン2. オブジェクトのメソッドからnew var newObj = new obj.funcMethod(); // ... thisは、newObj
// パターン3. bind メソッドで生成された関数オブジェクトからnew var boundFunc = func.bind(boundObj); var newObj = new boundFunc(); // ... thisは、newObj