javascript-手写new的原理

大家好,从今天开始给大家带来最新一个栏目手写面试常见的面试题,因为最近要准备面试。正好自己也复习一下,找到自己的不足。好啦,今天给大家讲解的面试题是new的原理。相信大家都是知道new这个关键字,可以得到构造函数对应的实例,例如:

let a = new Person('张三', '18')
console.log(a)

得到的结果就是 Person的实例对象

Person { name: '张三', age: '18' }

在面试中呢,问的非常多的无非是:第一个就是可以说一下new的执行过程,第二个就是手写new关键字

这两个问题呢其实是相互依赖,会做第一个就一定会做第二个了,下面我们来说第一个问题就是new的执行过程,new的执行过程分为4步:

1、创建空对象,这个对象作为返回的实例对象

2、将对象的隐式原型属性指向构造函数的显式原型属性

3、将this指向对象

4、返回这个对象

下面我们就来实现一下这个new关键字,我们在js中是没有办法编写关键字的我们可以使用函数代替,过程如下:

模仿的new关键字
function Mynew(fn,...args){
    1、创建空对象
    let obj={}
    2、将对象的隐式原型属性指向构造函数的显式原型属性
    obj.__proto__=fn.prototype
    3、将this指向对象
    fn.apply(obj,argas)
    4、返回这个对象
    return obj
    
}
构造函数
function Person(name,age){
    this.name=name
    this.age=age
}
let a=Mynew(Person,'张三','18')
console.log(a)

上面就手写出了new关键字,这样写下来是不是感觉很简单,其实js原型这些弄懂了就简单了,加油各位未来的大牛赶紧学起来,这期就到这里啦,如果感觉好请点一个赞谢谢!!!

  • 12
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值