new操作符创建对象可以分为以下四个步骤:
- 创建一个空对象
- 将所创建对象的__proto__属性值设为构造函数的prototype的属性值
- 执行构造函数中的代码,构造函数中的this指向该对象
- 返回对象
因此上面的过程就可以等同于下面的过程:
var Person = function(name, age) { this.name = name; this.sex= sex; }; Person.prototype.show = function() { console.log(this.name, this.sex); }; var obj = {}; obj.__proto__ = Person.prototype; Person.call(obj, "xiao", 20); // var obj = new Person("xiao", 20); console.log(obj);