JS 不是一门面向对象的语言,但是很多情况我们需要面向对象。
一、JS 继承的常用写法。
为什么一上来就写常用写法呢?很多的文章都写了很多关于js面向对象,继承的各种写法,发展史。其实我指向知道,JS的继承要怎么写。。。。。
demo:
function Animal(){
this.type = '动物';
}
function Cat(name){
this.name = name;
}
Cat.prototype = new Animal();
Cat.prototype.constructor = Cat;
var cat1 = new Cat('小花');
1、Cat.prototype = new Animal();
这里赋值的作用是让Cat 指向一个Animal的实例
2、Cat.prototype.constructor = Cat;
这里是给Cat.prototype这个对象增加一个属性,完成function有constructor属性,并且修正Cat的构造函数是Cat
总结:
1、function 才有constructor,构造函数是function
2、JS的继承关系,是一个假的继承。说白了就是function的所有实例,有一个proto的属性,这个属性指向另一个存在的对象。