1. function Person(name, age) {
    2. this.name = name;
    3. this.age = age;
    4. }
    5. var person = new Person("Alice", 23);
    1. 创建一个空对象

      1. let obj = new Object();
    2. 让Person中的this指向obj,并执行Person的函数体

      1. let result = Person.call(obj);
    3. 设置原型链,将obj的proto成员指向了Person函数对象的prototype成员对象

      1. obj.__proto__ = Person.prototype;
    4. 判断Person的返回值类型,如果是值类型,返回obj。如果是引用类型,就返回这个引用类型的对象。

      1. if (typeof(result) == "object")
      2. {
      3. person = result;
      4. }
      5. else{
      6. person = obj;
      7. }