模仿一个js new一个对象的历程

        function Person(){
          this.name=1234;
         // return {};
          }
        Person.prototype.getname=function(){
            console.log(this.name);
            }
        function CreateObj(){
           var fn=[].shift.call(arguments);
           var args=arguments;
           var obj=new Object();
           var ret=fn.apply(obj,args);
           obj.__proto__=fn.prototype;
           return typeof ret ==='object'?ret:obj;
           }
    var a=CreateObj(Person);
    console.log(a);

上述代码CreateObj 模拟了js new一个对象的历程,从该函数的代码中能够清楚的看到一个对象是怎样天生的,从这里我们也能够发明,假如组织函数显现的返回一个对象,new出来的对象就是该组织函数返回的对象,假如retrun其他范例的数据都会被new疏忽。

    原文作者:小脑fu
    原文地址: https://segmentfault.com/a/1190000008745409
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞