1,子类的原型对象——类式继承
//类式继承
//声明父类
function SuperClass() {
this.superValue = true;
}
//为父类添加共有方法
SuperClass.prototype.getSuperValue = function() {
return this.superValue;
};
//声明子类
function SubClass() {
this.subValue = false;
}
//继承父类
SubClass.prototype = new SuperClass();
//为子类添加共有方法
SubClass.prototype.getSubValue = function() {
return this.subValue;
}
类式继承:声明两个类,第一个类的实例赋值给第二个类的原型。
2,创建即继承——构造函数式继承
//构造函数式继承
//声明父类
function SuperClass(id) {
//引用类型共有属性
this.book = ['javascript', 'html', 'css'];
//值类型共有属性
this.id = id;
}
//父类声明原型方法
SuperClass.prototype.showBooks = function() {
console.log(this.books);
}
//声明子类
function SubClass(id) {
//继承父类
SuperClass.call(this, id);
}
//创建第一个子类的实例
var instance1 = new SubClass(10);
//创建第二个子类的实例
var instance2 = new SubClass(11);
SuperClass.call(this, id);这条语句是构造函数式继承的精华,由于call这个方法可以更改函数的作用环境,因此在子类中,对SuperClass调用这个方法就是将子类中的变量在父类中执行一遍,由于父类中是给this绑定属性的,因此子类自然也就继承了父类的共有属性。由于这种类型的继承没有涉及原型prototype, 所以父类的原型方法自然不会被子类继承,而如果想要被子类继承就必须要放在构造函数中,这样创建出来的每个实例都会单独拥有一份而不会复用,这样就违背了代码复用的原则。
js中继承一
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- > 此篇总结与《JavaScript设计模式》github地址 [YOU-SHOULD-KNOW-JS](http...
- 2016.9.9 第6章 原型与面向对象 原型虽然是定义对象的一种很方便的方式,但它的本质依然是函数特性。 使用原...