# javascript new的实现

# 定义一个类

function Person(name) {
  this.name = name || 'Obama'
}
1
2
3

# 实现

新建一个空对象,将对象的__proto__指向类的原型prototype,同时使用apply将该对象原型指向类,参数传入

function New(f) {
  return function() {
    var o = {"__proto__": f.prototype}
    f.apply(o, arguments)
    return o
  }
}
// 新建对象
var o = New(Person)('Trump')
1
2
3
4
5
6
7
8
9