Greasemonkeyで代入式を連ねると挙動が変わる

var a = window.wrappedJSObject.b = {};
var c = a.d = new function() {};
alert(c.constructor.prototype); // => undefined
var a = window.wrappedJSObject.b = {};
var c = new function() {};
alert(c.constructor.prototype); // => [object Object]
var a = {};
var c = a.d = new function() {};
alert(c.constructor.prototype); // => [object Object]

どういうことなの・・・?