js中的对象都有__proto__属性存在【隐式原型】,注意是两个_,
1,javascript对象的__proto__指向的是该对象的构造函数的原型对象,即constructor.prototype。
2,每个函数在创建之后都会获得一个prototype的属性,该属性指向函数的原型对象,所以函数除了__proto__属性外,多了一个prototype属性。
举几个栗子:
var Person = function () { }; var p = new Person(); console.log(p.__proto__ === Person.prototype); //true
console.log(Person.prototype.constructor === Person); //true
函数原型上的constructor对象指向的是函数本身,实例化出来的对象的__proto__指向的是构造函数原型对象。
最后,一般认为,Object.prototype.__proto__ === null。
真正厉害的人,大抵都是谦卑而善良的。
当你想要批评别人的时候,要记住,这世上并不是所有人都有你拥有的那些优势。【续】