五行代码完成 JavaScript 中的 new 关键字

JS 高程中的诠释

要建立 Person 的新实例,必需运用 new 操作符。以这类体式格局挪用组织函数现实上会阅历以下 4 个步骤:

(1) 建立一个新对象;

(2) 将组织函数的作用域赋给新对象(因而 this 就指向了这个新对象);

(3) 实行组织函数中的代码(为这个新对象增加属性);

(4) 返回新对象。

看了这个道理,想试着写下完成历程,虽然不够严谨。最少中心头脑是体现出来了。

模仿完成:

// 先写一个组织函数
function Person (name){
    this.name = name
}

// myNew 要领完成
function myNew(fn){
    let obj = Object.create(fn.prototype) // 建立一个对象,并将组织函数的原型对象赋给新建立的对象,即天生的实例与组织函数的原型对象关联
    let res = fn.apply(obj, Array.prototype.slice.call(arguments, 1)) // 函数实行(为该对象赋属性)
    return obj // 返回该对象
}
console.log(p1 instanceof Person) // true
console.log(myNew(Person, 'Tom')) // Person{ "name":"Tom" }
    原文作者:Ayden
    原文地址: https://segmentfault.com/a/1190000019051538
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞