JS的OOP--new一个function背后的实际操作

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

posted on 2017-03-16 15:05  王雪皓  阅读(194)  评论(0编辑  收藏  举报