原型和原型链
1-1 背景:
一个函数可以看成一个类,原型是所有类都有的一个属性,原型的作用就是给这个类的每一个对象都添加一个统一的方法
1-2基本概念
「prototype :」 每个函数
都会有
这个属性
,这里强调,是函数,普通对象
是没有
这个属性的(这里为什么说普通对象呢,因为JS里面,一切皆为对象,所以这里的普通对象不包括函数对象)。它是构造函数的原型对象;
「「proto」 :」 每个对象
都有
这个属性
,这里强调,是对象,同样,因为函数也是对象,所以函数也有这个属性。它指向构造函数的原型对象;
「constructor :」 这是原型对象上的一个指向构造函数的属性。
var webName = "yu";
// Pig的构造函数
function Pig(name, age) {
this.name = name;
this.age = age;
}
// 创建一个Pig的实例,小猪佩奇
var Peppa = new Pig('Peppa', 5);
Peppa.__proto__ === Pig.prototype。 //true
Pig.__proto__ === Function.prototype //true
Pig.prototype.constructor === Pig //true
1-3 什么是原型继承
一个对象可以使用另外
一个对象的属性
或者方法
,就称之为继承
。
具体是通过将这个对象的原型设置为
另外一个对象
,这样根据原型链的规则,如果查找一个对象属性且在自身不存在时,就会查找另外一个对象,相当于一个对象可以使用另外一个对象的属性和方法了。