js原型链prototype和__proto__

js 的原型链

原型链可以让所有的实例都拥有同样的属性或者方法 。

1
2
3
4
5
6
7
8
9
function Person(name){
this.type = "human";
this.name = name;
}

Person.prototype.planet = "earth";

var me = new Person("lqq");
console.log(me);

在输出的结果中 ,你会发现有三个属性, name , type ,proto , 其中的 proto 是隐式原型,它指向 Person的 prototype

也就是说 me.__proto__ === Person.prototype;

函数才有prototype ,所有的对象却都有proto

对象 正是通过 proto 才能访问到构造函数的prototype

Person.prototype.proto == Object.prototype

Object.prototype == null 因为Object的上面已经没有构造函数了