美文网首页
new的简单实现

new的简单实现

作者: 心大的少年 | 来源:发表于2019-08-27 20:26 被阅读0次

1.创建一个空的简单JavaScript对象(即{});
2.链接该对象(即设置该对象的构造函数)到另一个对象 ;
3.将步骤1新创建的对象作为this的上下文 ;
4.如果该函数没有返回对象,则返回this

也就是new运算符做的操作就是创建新对象,将新对象的原型指向被new的原型链,并且将this指向新对象
所以可以借用Oject.create这个方法创建一个新的对象,并且修改原型的指向

Object.create()方法创建一个新对象,使用现有的对象来提供新创建的对象的proto

function father(name, age) {
  this.name =  name;
  this.age = age;
}
father.prototype.con = function() {
  console.log(this.name, this.age);
}
function MyNew(fn, ...arg) {
   let newObj = Object.create(fn.prototype);
   fn.call(newObj, ...arg);
}
let son = MyNew(father, 'name', 123);
son.con(); // 'name' 123

相关文章

  • YYLabel富文本显示

    YYLabel实现方式 //1.简单显示label YYLabel *label = [YYLabel new];...

  • 手撕源码

    new 柯里化无限加 Promise(简单点实现的哈,没考虑太多场景)

  • new的模拟实现

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

  • js new操作符

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

  • 数组去重的几种简单方法

    1.最简单的就是ES6的实现function unique(arr){ return [...new Set(ar...

  • 2.new、apply、bind、call的模拟实现

    1.new的模拟实现 2.apply的模拟实现 原理很简单,将函数赋值成context的方法,调用函数,删除方法,...

  • new 实现

    new运算符都做了哪些操作呢?1、创建了一个新对象(是Object类型的数据)2、将this指向新对象3、执行构造...

  • ...new Set([])

    new Set实现去重 ...实现解构 let set =new Set(['a','b','c','a']); ...

  • bind不能改变new的this指向

    bind的实现: new的实现: 调用自定义的bind和new可以得到

  • call.apply.bind实现

    call实现 apply实现 bind实现 new实现

网友评论

      本文标题:new的简单实现

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