不用死记硬背,理解才是硬道理。只须要写个例子,而后输出看一下就清楚了函数
首先咱们看下new Person输出什么?this
var Person = function(name, age) { this.name = name; this.age = age; }; Person.prototype.show = function() { console.log(this.name, this.age); }; var p = new Person("bella", 10); console.log(p);
有属性name, age 和 __proto__spa
__proto__里面有原型方法show,constructor, __proto__prototype
而后咱们再输出构造器Person.prototype:code
对比一下,发现p的__proto__的值就是构造函数Person的prototype的属性值。对象
所以new操做符建立对象能够分为如下四个步骤:blog
所以上面的过程就能够等同于下面的过程:原型
var Person = function(name, age) { this.name = name; this.age = age; }; Person.prototype.show = function() { console.log(this.name, this.age); }; var p = {}; p.__proto__ = Person.prototype; Person.call(p, "balle", 10); // var p = new Person("bella", 10); console.log(p);