1、原型链继承(prototype)
创建一个A类,给它一个名字属性,一个睡觉的方法,一个吃的方法
创建一个C类,给它一个名字属性
利用prototype确立继承关系,但是这种方法有个缺点,new出来的对象会大量的占内存空间,所以使用另一种方法Object.create来确立继承关系
function Parent(){}Parent.prototype.age = 18;function Child(){}Child.prototype = Object.create(Parent.prototype); //确定继承关系Child.prototype.constructor = Child;//改回原来对象(Child)的构造器 //只要某个构造器的prototype改变,新new出的对象的构造器也会改变 Child.prototype.cno = "01";var p = new Parent();var c = new Child();console.log(c.age);
2.构造继承(call)
//*********call的理解*********//this指向谁是由运行时决定//this等于.号左边的东西function P(name,age){ this.name = name; this.age = age;}var o = {};P.call(o,"a",18); //此时P函数里面的this等于第一个参数console.log(o.name);console.log(o.age);
总得来说JS里的类就是构造器+原型
且constructor构造器一般指向函数。