阅读背景:

2019前端面试系列——JS高频手写代码题

来源:互联网 

实现 new 办法

/*
* 1.创立一个空对象
* 2.连接到原型
* 3.绑定this值
* 4.返回新对象
*/
// 第一种实现
function createNew() {
    let obj = {}  // 1.创立一个空对象

    let constructor = [].shift.call(arguments)  
    // let [constructor,...args] = [...arguments]  

    obj.__proto__ = constructor.prototype  // 2.连接到原型

    let result = constructor.apply(obj, arguments)  // 3.绑定this值
    // let result = constructor.apply(obj, args)   

    return typeof result === "object" ? result : obj  // 4.返回新对象
}

function People(name,age) {
    this.name = name
    this.age = age
}

let peo = createNew(People,"Bob",22)
console.log(peo.name)
console.log(peo.age)
/*
* 1.创立一个空对象
* 2.连接到原型
* 3.绑定this值
* 4



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: