new操作后都经历了什么

new共经历了四个过程

var fn = function () { };
var fnObj = new fn();
  1. 创建了一个空对象
var obj = new object();
  1. 设置原型链
obj._proto_ = fn.prototype;
  1. 让fn的this指向obj,并执行fn的函数体
var result = fn.call(obj);
  1. 判断fn的返回值类型,如果是值类型,返回obj。如果是引用类型,就返回这个引用类型的对象。
if (typeof(result) == "object"){ 
    fnObj = result; 
} else { 
    fnObj = obj;
} 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容