javascript第六章2
来源:互联网 发布:美国 博士 知乎 编辑:程序博客网 时间:2024/06/05 14:06
6.3继承
继承包括接口继承和实现继承。由于函数没有签名,所以没有接口继承,只支持实现继承,而且实现继承只依靠原型链来实现的。
function SuperType(){
this.property=true;
}
SuperType.prototype.getSuperValue=function(){
return this.property;
};
function SubType(){
this.subproperty=false;
}
//继承了SuperType
SubType.prototype=new SuperType();
SubType.prototype.getSubvalue=function(){
return this.subproperty;
};
var instance=new SubType();
alert(instance.getSuperValue()); //true
alert(instance instanceof Object); //true
alert(instance instanceof SuperType); //true
alert(instance instanceof SubType); //true
return this.property;
}
SubType.prototype.getSubType=function(){
return this.subproperty;
}
重写超类型中的方法(屏蔽掉SuperType.prototype.getSuperType)
SubType.prototype.getSuperType=function(){
return false;
}
var instance=new SubType();alert(instance.ggetSuperType()); //false
通过原型链实现继承时,不能使用字面量创建原型方法,因为这样做就会重写原型链
return this.property;
}
//使用字面量添加新方法,会导致上一行代码无效(以上代码刚刚把SuperType的实例赋值给原型,紧接着又将远行替换成一个而导致的问题。由于现在的原型包含的是一个object的实例,而非SuperType的实例,因此我们设想中的原型链已经被切断---SubType和SuperType之间已经没有关系了)
SubType.prototype={
getSubValue:function(){
return this.subproperty;
},
someOtherMethod:function(){
return false;
}
};
var instance = new SubType();
alert(instance.getSuperValue()); //error
原型链的问题
function SuperType(){
var colors=["red","yellow","blue"];
}
function SubType(){
}
var instance1=new SubType();
instance1.colors.push("black");
alert(instance1.colors); //"red,yellow,blue,black"
var instance2=new SubType();
alert(instance2.colors); //"red,yellow,blue,black" SubType的实例都会共享colors,
借用构造函数
- javascript第六章2
- javascript第六章
- JavaScript权威指南 第六版 第六章 笔记
- javascript definition guide(javascript权威指南)第六章 Example 6-2里一个小错误
- 《 JavaScript高级程序设计》第六章 DOM基础
- 学习笔记:第六章--javascript数组
- JavaScript权威指南:对象(第六章)
- Javascript高级程序设计第六七章
- JavaScript权威指南_第六章:对象
- 第六章:JavaScript面向对象编程
- javascript权威指南第六版学习笔记-客户端javascript(2)
- 第六章(2)
- 1.第六章2
- 第六章作业2
- javascript第六天
- JAVASCRIPT的第六天
- 《JavaScript权威指南》第六版学习笔记——第六章 对象
- 第六章第六题
- 多线程之futureTask(future,callable)实例,jdbc数据多线程查询
- Your account already has a valid iOS Distribution certificate!问题解决
- elk5.6.0 centos7 及问题
- C++ Primer Plus 编程练习 第三章
- C++ 复习要点
- javascript第六章2
- "ZUMA"(COCI#2009-2010#contest 5)
- link标签的用法及link属性大全
- Python 中 __all__ 的作用
- 安装Webtatic yum源
- 抽奖
- java.net.ProtocolException: Server redirected too many times (20)
- Linux笔记(1):VMware虚拟机 Ubuntu 16.04 安装 VMware Tools
- Android的Gson的使用方法,实现Json结构间相互转换