简单模拟实现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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ![Flask](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAW...
    极客学院Wiki阅读 12,105评论 0 3
  • 不知不觉易趣客已经在路上走了快一年了,感觉也该让更多朋友认识知道易趣客,所以就谢了这篇简介,已做创业记事。 易趣客...
    Physher阅读 8,711评论 1 2
  • 双胎妊娠有家族遗传倾向,随母系遗传。有研究表明,如果孕妇本人是双胎之一,她生双胎的机率为1/58;若孕妇的父亲或母...
    邺水芙蓉hibiscus阅读 9,065评论 0 2
  • 晴天,拥抱阳光,拥抱你。雨天,想念雨滴,想念你。 我可以喜欢你吗可以啊 我还可以喜欢你吗可以,可是你要知道我们不可...
    露薇霜凝阅读 4,990评论 1 2