一、函数和对象
- 所有函数都拥有一个prototype(原型)属性
- 所有对象都拥有一个__proto__属性和constructor属性
- 在js中因为函数也是对象,所以函数也拥有__proto__属性和constructor属性
二、 两个等式
function Animal() { this.name = ""; this.age = ""; this.sex= ""; this.sleep = function () { console.log("睡觉"); }; this.eat = function () { console.log("吃饭"); } } var animal = new Animal(); console.log(animal); console.log(animal.__proto__ == Animal.prototype); console.log(Animal.prototype.constructor == Animal);
函数创建的对象.__proto__ == 该函数.prototype;
函数.prototype.constructor == 该函数本身;
三、原型链
每个对象都拥有__proto__属性,该属性是由一个对象指向另一个对象。当我们访问一个对象的属性 时,如果这个对象内部不存在这个属性,那么他就会去__proto__里找这个属性,这个__proto__又会有自己的__proto__,于是就这样 一直找下去,也就是我们平时所说的原型链的概念。