美文网首页
new 过程

new 过程

作者: 幸福幸福幸福 | 来源:发表于2017-06-29 18:48 被阅读12次

    【如果你对js的this还不了解,请先阅读:JS作用域和this关键字
    【如果你不了解JS原型链,请先阅读:JS原型和原型链

      new Animal("cat"){
            var obj={};
            obj.__proto__ = Animal.prototype;
            var result=Animal.call(obj,"cat");
            return typeof result ==='object'?result:obj;
      }
    

    第一步:创建一个空对象obj;
    第二步:把obj的proto指向Animal的原型对象prototype,此时便建立了obj对象的原型链:obj-->Animal.prototype-->Object.prototype-->null。
    第三步:在obj对象的执行环境调用Animal函数并传递参数“cat”。 相当于var result = obj.Animal("cat")。
    当这句执行完之后,obj便产生了属性name并赋值为"cat"。
    第四步:考察第3步返回的返回值,如果无返回值或者返回一个非对象值,则将obj返回作为新对象;否则会将返回值作为新对象返回。

    相关文章

      网友评论

          本文标题:new 过程

          本文链接:https://www.haomeiwen.com/subject/kztyxxtx.html