读书笔记.关于es5对象的实例化和继承的简单理解

1.es5的类实现是通过function构造函数实现的如
读书笔记.关于es5对象的实例化和继承的简单理解
通过new的方式实例化这个构造函数。可以添加一下方法如
function Student(name)
{
this.name=name;
this.read=function()
{
alert(this.name+‘我在读书’)
}
}

let s=new Student(‘zs’);

我们可以给类绑定静态的方法如
Student.eat=function()
{
alert(this.name+‘在吃’)
}
直接通过类调用
Student.eat();
还可以通过原型链的方式绑定方法和属性
Student.prototype.sleep=function()
{
alert(this.name+‘在睡觉’)
}
let s=new Student(‘lx’);
s.sleep();
注意原型链绑定的所有实例共享的。
类的继承
es5一般要用对原型链和对象冒充实现继承
什么是对象冒充继承呢?
如:
function Student(name)
{
this.name=name;
this.read=function()
{
alert(this.name+‘在读书’)
}
}
Student.prototype.sleep=function()
{
alert(this.name+‘在睡觉’)
}

function P(name)
{
Student.call(this,name);
}
let p=new p(‘zs’);
p.read();

P通过Student.call的方法继承了student 但是没有继承没有继承原型链。
p.sleep会报错
原型链继承是直接把父类构成函数的实例的直接赋值给子类原型链如:
function P(name)
{
}

P.prototype= new Student();
let p=new p(‘zs’);
p.sleep();
原型链继承实例化子类没法给父类传参所以结果是undefined在睡觉
所以要实现传参和继承原型链所以要结合起来用才能做到继承
function P(name)
{
Student.call(this,name);
}

P.prototype=Student();
let p=new p(‘zs’);
p.sleep();