简单模拟实现js的new操作符

function CreateStudent(name) {
  this.name = name
}

let student = new CreateStudent('xiaoming')

function selfNew () {
  console.log(arguments[0])
  // 获取函数
  const Func = arguments[0]
  // 获取函数参数
  const params = Array.prototype.slice.call(arguments, 1)
  // 创建新的对象构造函数的原型挂载到新对象上
  let self = Object.create(Func.prototype)
  // 执行原来的函数进行初始化操作
  Func.apply(self, params)
  // 返回新的对象
  return self
}
console.log(student, selfNew(CreateStudent, '小明'))

运行效果图:


image.png

你可能感兴趣的:(简单模拟实现js的new操作符)