美文网首页
new 关键字模拟实现

new 关键字模拟实现

作者: 菜鸟切图仔 | 来源:发表于2019-03-02 16:13 被阅读0次

首先,new 是JavaScript用来实例化一个对象的关键字,后边跟着构造函数,例如:

function Person(name){
  this.name = name;
}
Person.prototype.getName = function(){
  console.log(this.name)
}

var per = new Person("小黑不黑");
per.getName(); // 小黑不黑

那么,new究竟做了什么事呢?

  1. 新建一个空对象
  2. 空对象的 proto 属性指向构造函数的 prototype
  3. 执行构造函数
  4. 返回这个对象
模拟代码实现如下
myNew = function(){
  const instance = Object.create(null);
 // 获取myNew函数传入的第一个参数,即构造函数
  const _constructor = Array.prototype.shift.call(arguments); 
 // 空对象_proto_属性指向构造函数的原型
  instance._proto_ =_ constructor.prototype;
  _constructor.apply(instance,arguments);
  return instance;
}

// =========================测试==============================
function Person(name) {
    this.name = name;
}
Person.prototype.getName = function () {
    console.log(this.name)
}

const per = myNew(Person,"小黑不黑");
const per2 = new Person("小黑不黑");
console.log(per);
console.log(per2);
执行结果

相关文章

  • new 关键字模拟实现

    首先,new 是JavaScript用来实例化一个对象的关键字,后边跟着构造函数,例如: 那么,new究竟做了什么...

  • new的模拟实现

    原文出处 JavaScript深入之new的模拟实现 new 我们在模拟 new 之前,先看看 new 实现了哪些...

  • JavaScript new 关键字

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

  • 模拟实现new

    mdn关于new运算符的介绍: new 运算符创建一个自定义对象或具有构造函数的内置对象的实例。 是不是看着有点懵...

  • new的模拟实现

    实现目标: 创建新的对象 新对象属性有构造函数中this绑定的属性 新对象可以访问构造函数原型链上的属性和方法 如...

  • 模拟new的实现

    执行结果 百度百科:每个函数就是一个对象(Function),函数对象都有一个子对象 prototype 对象,类...

  • 模拟new的实现

    new运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象类型之一 模拟new之前,看看new实现了哪些...

  • new的模拟实现

    new 实现的些功能。 实例 person 可以: 访问到 Otaku 构造函数里的属性 访问到 Otaku.pr...

  • js学习札记-new关键字

    js 的new关键字解析的过程中引擎执行了很多步骤,我们可以自己写一个仿new的函数来实现new关键字。 说js ...

  • js基础-new关键字

    js 的new关键字解析的过程中引擎执行了很多步骤,我们可以自己写一个仿new的函数来实现new关键字。 js n...

网友评论

      本文标题:new 关键字模拟实现

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