首先我们由需求引出
(一)需求 ES6之后我们用类来实例化对象 ES5时候呢?怎么实现和类一样的功能
解决这个需求我们有2个要解决 1.类实例化的对象有属性方法---怎么实现
我们有构造函数 ,通过构造函数创建对象
function Star(Name,Age) {
this.Name = Name;
this.Age = Age;
sing = function() {}
}
var ldh = new Star("刘德华",41);
ldh.Age 就实现了属性的调用
(二)类方法的调用呢?
新的需求 我们实例化多个对象 创建所有对象都可以调用的方法
prototype的引入
prototype是一个对象里面都有的属性 他是一个对象
只要给这个对象赋予方法 那么所有通过构造函数实例化的对象就可以调用这个方法了
Star.prototype.sing = function(){}
那么 为什么通过构造函数实例化的对象就可以调用这个方法?
因为构造函数有个默认属性proto ---指向这个构造函数的prototype(原形对象)
proto属性会给所有构造函数实例化的对象
prototype对象里面还有个属性constructor ---直接指向对应的构造函数
然后我们根据各个对象之间的关系
这种对象之间通过proto属性查找的链子就称为原型链