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

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

作者: 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