美文网首页
手写new关键字

手写new关键字

作者: 变量只提升声明不提升赋值 | 来源:发表于2020-12-23 15:08 被阅读0次
//先来准备一个构造函数
function dog(name) {
        this.name = name
    }
dog.prototype.sayName = function () {
        console.log(this.name)
    }


//接下来去写new关键字的处理函数



    function newobj(fn,...param) {
        //首先这个函数接收两个参数,第一个参数就是构造函数,第二个参数就是构造函数所要接收的参数,也就是上文中的name
        let obj = Object.create(fn.prototype) 
            //使用Object.create方法创建一个对象,
            //并把构造函数的原型(fn.prototype)传进去代表 用当前对象的原型去创建
        fn.call(obj,...param)
          //这里就可以调用fn函数进行对象的初始化了,同时使用call方法去改变当前函数中this的指向,使他指向新创建的对象
          //现在dog函数中的this指向的就是obj这个对象了,然后我们将接收到的参数传进去,最后返回这个obj
        return obj
    }
   let obj2 =  newobj(dog,'小狗')
    console.log(obj2)
    obj2.sayName()
image.png

可以看到obj2这个对象里有了name这个属性,并且他的原型上也有sayName这个函数,调用这个函数也没有问题。这就是new关键字做的事情

相关文章

  • 手写new关键字

    首先我们要清楚new关键字做了什么事情 1.在内存中创建一个新的空对象。 2.让 this 指向这个新的对象。 3...

  • 手写new关键字

    可以看到obj2这个对象里有了name这个属性,并且他的原型上也有sayName这个函数,调用这个函数也没有问题。...

  • 手写new

  • C++中new、operator new和placement n

    1. new (1)C++对象实例化的时候使用new关键字和不使用new关键字的区别 使用new是动态分配内存,这...

  • 面试秘籍之手写系列

    一、手写call函数 二、手写bind函数 三、手写实现new功能的函数 四、手写reduce函数 五、手写防抖函...

  • 前端手写

    节流 防抖 用xhr手写axios 函数柯里化 手写promise 手写reduce new 深拷贝 string...

  • JS 手写 new

    new 关键字作用 众所周知,js 中 new 关键字的作用就是创建一个构造函数的实例对象 如以下构造函数,使用 ...

  • Java中生成实列

    1.new 一般我们使用Java关键字new生成实例。 Something obj=new Something()...

  • JavaScript new 关键字

    new 关键字 在JavaScript中, new 关键字用来创建一个类(模拟类)的实例对象。 实例化对象之后, ...

  • Java中创建对象的四种方式

    使用new关键字创建对象 使用new关键字创建对象是最常见的一种方式,但是使用new创建对象会增加耦合度。在开发中...

网友评论

      本文标题:手写new关键字

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