看完别人写的博客,我也就过来自己写计一下。
在js中没有子类和父类的概念,全靠的都是原型链这个东西。
在js创建之初,他的作者Brendan Eich就说过,设计这个语言,不需要太复杂用来做表单的验证就行。
js是简明的脚本语言,就不能有继承的机制,但是js中都是对象,就必须有“继承”。最后Brendan Eich决定创建一个继承。
但是,他不打算引入类,因为引入类的概念以后,js就完全是面向对象的编程。
然会Brendan Eich就引用c++和java的new的操作,但是他并不打算引入类,所以在new的后面跟的是构造函数。
function obj(name){
this.name = name;
}
var obj = new obj('dog');
console.log(obj); //dog
但是这是我再new一个电子狗的时候,他们俩并不会相互印象。
var obj1 = new obj('e-dog');
console.log(obj1); //e-dog
这就是new的一个缺点,实例并不能共享。
所以他又创建了一个方法,prototype。
这个方法用来解决构造函数不能实例共享的缺点。
obj1.prototype.name = "混合狗";
console.log(obj); // 混合狗
console.log(obj1); // 混合狗
这就是js的继承。