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原型这些弄懂了就简单了,加油各位未来的大牛赶紧学起来,这期就到这里啦,如果感觉好请点一个赞谢谢!!!

你可能感兴趣的:(手写js,面试,javascript,前端,开发语言,idea)