function Student(name) { this.name = name }
let stu = new Student('zs')
|
new 做了哪些事
- 创建一个新的空对象,类型是 Student
- 将 this 指向这个新的对象
- 执行构造函数 目的:给这个新对象加属性和方法
- 返回这个新对象
简单实现
function NEW(fun) { if (typeof fun !== 'function') { throw new Error('第一个参数应该是函数') }
const newObj = Object.create(fun.prototype)
const argsArr = [].slice.call(arguments, 1)
const result = fun.apply(newObj, argsArr)
const isObject = typeof result === 'object' && result !== null const isFunction = typeof result === 'function' if (isObject || isFunction) { return result } return newObj }
|
const stu = NEW(Student, 'ls') console.log(stu)
|