new演算子によるオブジェクト生成について

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