JavaScript的OO特性:继承
2006-08-11 11:04
323 查看
继承无疑是JavaScript体现OO特性的最为重要的一环,不能实现继承的语言就不能称为面向对象语言.
由于JavaScript是一门基于对象的语言,先天并不支持继承特性.这里使JavaScript具有继承的特点,是使用prototype关键字实现的.
prototype是原型关键字,它是一个对象,是属于每一个JavaScript类型变量的子对象.设想一下,如果变量b的prototype是变量a,而a具有方法show,那么通过b.prototype.show就等价于a.show.当然,b.prototype.show这种写法相当不友好,值得庆幸的是,浏览器总算支持一种特殊的访问规则:如b.show调用时,如果b变量自己具有show方法,则直接调用b的show方法,如果没有,则调用b.prototypt.show,如果还没有,则调用b.prototype.prototype.show...依次类推,一直到最底层.(这种调用机制,是JavaScript实现继承的核心机制!)
首先定义一个类,如下:
//由Employee类派生一个WorkerBee子类
WorkerBee.prototype = new Employee;
关键还是在于WorkerBee.prototype = new Employee;这行代码实现了继承.(就是prototype成为Employee实例.
如下是全部的示例代码:
E
<script type="text/javascript">
//创建一个类Employee作为基类
//var Employee = function(name,dept){ //由Employee类派生一个WorkerBee子类
WorkerBee.prototype = new Employee;
var w = new WorkerBee(24,"fanrong","技术部");
//WorkerBee.show(w.toString());//调用失败,显然javascript不支持静态方法的继承.
Employee.show(w.toString()); //这里w.toString()调用成功,表明支持类非静态方法与变量对象的继承
</script>
这里WorkerBee类继承并扩展了Employee类,重载了toString方法,但是比较遗憾,这里Employee.show静态方法不能为子类继承 :(
由于JavaScript是一门基于对象的语言,先天并不支持继承特性.这里使JavaScript具有继承的特点,是使用prototype关键字实现的.
prototype是原型关键字,它是一个对象,是属于每一个JavaScript类型变量的子对象.设想一下,如果变量b的prototype是变量a,而a具有方法show,那么通过b.prototype.show就等价于a.show.当然,b.prototype.show这种写法相当不友好,值得庆幸的是,浏览器总算支持一种特殊的访问规则:如b.show调用时,如果b变量自己具有show方法,则直接调用b的show方法,如果没有,则调用b.prototypt.show,如果还没有,则调用b.prototype.prototype.show...依次类推,一直到最底层.(这种调用机制,是JavaScript实现继承的核心机制!)
首先定义一个类,如下:
//由Employee类派生一个WorkerBee子类
WorkerBee.prototype = new Employee;
关键还是在于WorkerBee.prototype = new Employee;这行代码实现了继承.(就是prototype成为Employee实例.
如下是全部的示例代码:
E
<script type="text/javascript">
//创建一个类Employee作为基类
//var Employee = function(name,dept){ //由Employee类派生一个WorkerBee子类
WorkerBee.prototype = new Employee;
var w = new WorkerBee(24,"fanrong","技术部");
//WorkerBee.show(w.toString());//调用失败,显然javascript不支持静态方法的继承.
Employee.show(w.toString()); //这里w.toString()调用成功,表明支持类非静态方法与变量对象的继承
</script>
这里WorkerBee类继承并扩展了Employee类,重载了toString方法,但是比较遗憾,这里Employee.show静态方法不能为子类继承 :(
相关文章推荐
- javascript的OO继承
- JavaScript的OO特性:静态方法
- JavaScript必知的特性(继承)
- Javascript OO 基础概念(三)–原型继承
- JavaScript的OO特性:Singleton单件模式
- JavaScript必知的特性(继承)
- JavaScript面向对象编程深入分析之继承特性
- 深入理解 JavaScript 继承的特性与最佳实践
- 详解JavaScript中基于原型prototype的继承特性
- javascript高级特性之"继承"
- JavaScript的OO特性:静态方法
- javascript中的继承特性
- Javascript面向对象特性实现(封装、继承、接口)
- 简单理解JavaScript中的封装与继承特性
- JavaScript面向对象编程之class继承(ES6新特性)
- 简单理解JavaScript中的封装与继承特性
- JavaScript的OO特性:类与对象
- JavaScript ES6新的类继承特性学习笔记
- JavaScript的相关继承笔记以及使用外部库实现JavaScript的面向对象特性
- Javascript面向对象特性实现封装、继承、接口详细案例——进级高手篇