美文网首页
js new的模拟实现

js new的模拟实现

作者: 一代码农1970 | 来源:发表于2020-09-22 08:52 被阅读0次

new

new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象类型之一

        function objectFactory() {

            var obj = new Object(),

            Constructor = [].shift.call(arguments);

            obj.__proto__ = Constructor.prototype;

            var ret = Constructor.apply(obj, arguments);

            return typeof ret === 'object' ? ret : obj;

        };

1、用new Object() 的方式新建了一个对象 obj
2、取出第一个参数,就是我们要传入的构造函数。此外因为 shift 会修改原数组,所以 arguments 会被去除第一个参数
3、将 obj 的原型指向构造函数,这样 obj 就可以访问到构造函数原型中的属性
4、使用 apply,改变构造函数 this 的指向到新建的对象,这样 obj 就可以访问到构造函数中的属性
5、返回 obj

相关文章

  • 面试官问:能否模拟实现JS的call和apply方法

    之前写过两篇《面试官问:能否模拟实现JS的new操作符》和《面试官问:能否模拟实现JS的bind方法》 其中模拟b...

  • js new的模拟实现

    new new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象类型之一 1、用new Object...

  • new的模拟实现

    原文出处 JavaScript深入之new的模拟实现 new 我们在模拟 new 之前,先看看 new 实现了哪些...

  • 实现模拟JS的new功能

    new功能是要生成一个构造函数的实例,所以在实现过程中需要我们手动创建一个空对象,对象的原型继承自构造函数。如果调...

  • 模拟实现js中new的作用

  • 再学JS--new的模拟实现

    什么是new? new运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象类型之一 举个例子说明下: 从...

  • 模拟实现new

    mdn关于new运算符的介绍: new 运算符创建一个自定义对象或具有构造函数的内置对象的实例。 是不是看着有点懵...

  • new的模拟实现

    实现目标: 创建新的对象 新对象属性有构造函数中this绑定的属性 新对象可以访问构造函数原型链上的属性和方法 如...

  • 模拟new的实现

    执行结果 百度百科:每个函数就是一个对象(Function),函数对象都有一个子对象 prototype 对象,类...

  • 模拟new的实现

    new运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象类型之一 模拟new之前,看看new实现了哪些...

网友评论

      本文标题:js new的模拟实现

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