JavaScript 如何实现一个 new

发布于 2024-09-04 23:46:29 字数 750 浏览 34 评论 0

要手动实现一个 new 操作符,首先要知道 new 操作符都做了什么事,即构造函数的内部原理:

  1. 创建一个新对象;
  2. 链接到原型(将构造函数的 prototype 赋值给新对象的 proto );
  3. 绑定 this(构造函数中的 this 指向新对象并且调用构造函数)
  4. 返回新对象
function newFn(fn) {
    // 创建一个新对象,并将这个对象的__proto__指向构造函数的 prototype
    var obj = {
        __proto__: fn.prototype
    };
    // 将构造函数的 this 指向这个新对象
    var res = fn.apply(obj, Array.prototype.slice.call(arguments, 1));
    // 判断构造函数是否有返回值
    if ((typeof res === "object" || typeof res === "function") && res !== null) {
        return res ;
    }
    // 返回这个新对象
    return obj;
}

function Person(name, age) {
    this.name = name;
    this.age = age;
}

var p = newFn(Person, 'cao', 22);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

扮仙女

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

linfzu01

文章 0 评论 0

可遇━不可求

文章 0 评论 0

枕梦

文章 0 评论 0

qq_3LFa8Q

文章 0 评论 0

JP

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文