很久之前模仿大佬的文章写的笔记,现在拿出来整理复习一下
大概思路
// 手写一个new实现
function create() {
//创建一个空的对象
var obj = new Object(),
//获得构造函数,arguments中去除第一个参数
Con = [].shift.call(arguments)
//链接到原型,obj可以访问到构造函数原型中的属性
obj._proto_ = Con.prototype
//绑定this实现继承,obj可以访问到构造函数中的属性
var ret = Con.apply(obj, arguments)
//优先返回构造函数返回的对象
return ret instanceof Object ? ret : obj
}
// 使用这个手写的new
function Person() {... }
//使用内置函数new
var person = new Person()
//使用手写的new,即create
var person = creaate(Person, ...)