原型
所有的对象都是通过 new 函数
创建
所有的函数都是对象 函数对象中可以有属性
所有对象都是引用类型
原型
所有函数都有的一个属性:prototype,称之为函数原型
默认情况下,prototype是一个普通的Object对象
默认情况下,prototype中有一个属性,constructor,它也是一个对象,指向构造函数本身
隐式原型__proto__
所有的对象都有一个属性 :__proto_
,称之为隐式原型
默认情况下,隐式原型指向创建该对象的函数的原型
一般静态属性写在构造原型中,方法属性写在原型对象中,比如以下练习
创建一个构造为动物,里面初始化动物的名字,品种,年龄;以及每个动物都有的吃、叫
function Animal(name, type, age) {
this.name = name;
this.type = type;
this.age = age;
}
// Animal.prototype = {}
var cat = new Animal('小猫', '猫', 1);
var dog = new Animal('小狗', '狗', 2);
var rabbit = new Animal('小兔', '兔', 2);
// cat.eat('猫粮');会报错,此时原型链上并没有eat这个方法
// cat.jiao('喵喵');
Animal.prototype.eat = function(food) {
console.log(this.name + '爱吃' + food);
}
Animal.prototype.jiao = function(voice) {
console.log(this.name + voice);
}
Animal.prototype.inrt = function() {
console.log(`${this.name}是${this.type}类的动物!`);
}
// Animal.prototype = {eat:fun...,jio:fun...,inrt:fun...}
dog.eat('骨头');