美文网首页
前端知识汇总(原型链篇)

前端知识汇总(原型链篇)

作者: cenkai88 | 来源:发表于2017-03-15 15:57 被阅读15次
    1. 原型链


      Paste_Image.png
    2. new关键词执行了什么

    // 将构造函数以参数形式传入
    function New(func) {
    
        // 声明一个中间对象,该对象为最终返回的实例
        var res = {};
        if (func.prototype !== null) {
    
            // 将实例的原型指向构造函数的原型
            res.__proto__ = func.prototype;
        }
    
        // ret为构造函数执行的结果,这里通过apply,将构造函数内部的this指向修改为指向res,即为实例对象
        var ret = func.apply(res, Array.prototype.slice.call(arguments, 1));
    
        // 当我们在构造函数中明确指定了返回对象时,那么new的执行结果就是该返回对象
        if ((typeof ret === "object" || typeof ret === "function") && ret !== null) {
            return ret;
        }
    
        // 如果没有明确指定返回对象,则默认返回res,这个res就是实例对象
        return res;
    }
    

    相关文章

      网友评论

          本文标题:前端知识汇总(原型链篇)

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