var fun = new Fun();
其实相当于以下三步:
1. var fun = {};
2. fun.__proto__ = Fun.prototype;
3. Fun.call(fun);
特别说明一种情况,默认构造函数是没有写明return的,实际上会返回一个this值所引用的对象。
1.构造函数在没有指定返回值的情况下,默认会返回新对象实例
2.如果指定的返回值是基本数据类型的话,仍然会返回新对象实例
3.如果指定返回对象了的话,被返回的对象就成了指定的对象值。在这种情况下,this值所引用的对象就被丢弃了。
var fun = function(){
this.name = 'peter';
return {
name: 'jack'
};
}
var p = new fun();
console.log(p.name); //打印出jack