谜兔

文章 评论 浏览 29

谜兔 2022-05-04 13:57:39

new运算符都做了哪些操作呢?
1、创建了一个新对象(是Object类型的数据)
2、将this指向新对象
3、将创建的对象的原型指向构造函数的原型
4、返回一个对象(如果构造函数本身有返回值且是对象类型,就返回本身的返回值,如果没有才返回新对象)

下面就写一个实现new功能的函数:

function mynew () {
     // 1、创建一个新对象
     const obj = Object.create({});    // 也可以写成 const obj = {}
     // 2、将this指向该对象
     let Fn = [].shift.call(arguments);    // 把构造函数分离出来
     let returnObj = Fn.apply(obj, arguments);     // 通过apply将this指向由Fn变为obj
     
     // 3、将新对象的原型指向构造函数的原型
     obj.__proto__ = Fn.prototype
     
    // 4、返回对象(如果构造函数有返回对象,那么就返回构造函数的对象,如果没有就返回新对象)
    return Object.prototype.toString.call(returnObj) == '[object Object]' ? returnObj : obj;
}

第 14 题:情人节福利题,如何实现一个 new

谜兔 2022-05-04 13:54:48

把某个key加配料,带上时间戳,加密,请求时带上,过期或解密失败则403。

@impeiran 不限制频率还是没用啊

第 131 题:接口如何防刷?

更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

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