美文网首页
js中new操作符

js中new操作符

作者: AAAlex_65a0 | 来源:发表于2020-07-03 17:25 被阅读0次

js中的new操作符MDN中是这样说的。new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。
我们使用new就是实例化一个类的过程。这个过程中会进行以下几步:

  • 步骤如下
    • 创建一个对象
    • 让对象的proto指向构造函数的原型
    • 让构造函数运行并且将this指向这个对象
    • 返回这个对象。
function myNew(constructor, ...rest) {
    // let obj = {}
    // obj.__proto__ = constructor.prototype
    // constructor.call(obj, ...rest)
    // return obj

    let child= Object.create(constructor.prototype)
    constructor.apply(child,rest)
    return child
}

现在我们试一下

// 自己的new
function myNew(constructor, ...rest) {
  if (typeof constructor === "function") {
    // let obj = {}
    // obj.__proto__ = constructor.prototype
    // constructor.call(obj, ...rest)
    // return obj
    let child= Object.create(constructor.prototype)
    constructor.apply(child,rest)
    return child


  }
}

// 构造函数F
function F(name) {
  this.name = name
  this.hello=function () {
      console.log('hello')
  }
}
F.prototype.ok=function(){
  console.log('ok')
}
//  当前构造函数的实例
let f = myNew(F,'alex')


console.log(f.name) // alex
f.hello() // hello
f.ok() // ok

相关文章

  • JS基础回归01:new操作符,原型和原型链

    本篇介绍 new 操作符的背后原理以及 JS 如何依赖原型形成原型链,完成继承。 new 操作符的本质 new 操...

  • js面试题--new的原理

    JS中的new操作符 和其他高级语言一样,JS中也有new运算符,我们知道new运算符是用来实例化一个类,从而在内...

  • new操作步骤

    js中的new()到底做了些什么?? 要创建 Person 的新实例,必须使用 new 操作符。以这种方式调用构造...

  • js中new操作符

    js中的new操作符MDN中是这样说的。new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实...

  • 关于 new 操作符

    1. 为什么要有new操作符? JS 的 new 到底是干什么的? 本文指出,new 操作符其实就是个语法糖,用了...

  • 面试题【Day10】

    本篇绪论 1, call、apply、bind 2, Object.create() 3,JS中的new操作符的原...

  • new操作符

    最近在掘金上看到大佬 yck 的文章 重学 JS 系列:聊聊 new 操作符把new操作符的作用,如何自己实现ne...

  • JS中的new操作符

    转载 JavaScript中new操作符用于创建一个给定构造函数的对象实例。 如下例子: 我们定义了一个构造函数P...

  • js new操作符

    简单实现 其实new操作符实现还是很简单的,因为Mdn上总共也就是4句话来描述它的作用 创建一个空的简单JavaS...

  • new操作符原理及实现

    [toc] 分析:new做了什么 new操作符通过执行自定义构造函数或者js内置构造函数,从而生成一个实例对象。 ...

网友评论

      本文标题:js中new操作符

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