function Animal (type, size){
this.type = type;
this.size = size;
}
构造函数
Animal, 函数名即构造函数functionname,跟普通js函数无明显差别,用new即实例化对象,不用new即调用方法。
prototype属性
Animal.prototype.info = function(){
console.log(`type:${this.type},size:${this.size}`)
}
每个构造函数都有一个prototype属性,类似于一个指针,指向原型对象
原型对象
同类不同实例之间的共享方法和属性可放在prototypez指向的原型对象中。
constructor (原型对象的constructor)
原型对象都含有一个指向构造函数的指针
Animal.prototype.constructor === Animal // true
实例
var dog = new Animal('dog', 'small');
var tiger = new Animal('tiger', 'big');
new出来的变量,dog,tiger都是。
propo
每个实例都有一个__propo__属性,相当于一个指针,也指向原型对象,即
dog.__proto__ === Animal.prototype //true
tiger.__proto__ === Animal.prototype//true
tips
重写原型对象将会切断现有实例与新原型之间的联系