javascript实现面向对象时,并没有类似于java、c++的严格的类层次结构。所以想实现继承,也不能通过extend等方式实现。不过javascript提供的原型链表机制可以很好的完成这一工作,实现继承机制。

继承的思想宽松点说就是子类继承父类的属性和方法,并且隐藏父类的同名属性或方法。在javascript中实现该机制并不难,只不过比较粗糙一点,看下面的例子。

   1:  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   2:  <html xmlns="http://www.w3.org/1999/xhtml">
   3:   <head>
   4:    <title>javascript子类化</title>
   5:    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   6:    <meta name="generator" content="Ntcsoft" />
   7:    <meta name="author" content="MrZhou" />
   8:    <meta name="keywords" content="" />
   9:    <meta name="description" content="" />
  10:   </head>
  11:   
  12:   <body>
  13:   
  14:    <script type="text/javascript">
  15:    //父类构造函数
  16:      function fa (){
  17:          var privateFs = "private father String";//私有成员
  18:   
  19:          this.getPrivateFs = function(){ //私有成员的get方法
  20:              return privateFs;
  21:          }
  22:          this.setPrivateFs = function( str ){//私有成员的set方法
  23:              privateFs = str;
  24:          }
  25:   
  26:          this.fs = 'father string';
  27:          this.ff=function(){
  28:              alert('father function');
  29:          }
  30:      }
  31:      //子类构造函数
  32:      function son(){
  33:          this.ss = 'son string';
  34:          this.sf = function(){
  35:              alert('son function');
  36:          }
  37:      }
  38:      //实现子类继承父类,这里实际上是让构造函数son的原型对象指向fa函数的实例,这样,son的prototype属性就拥有了fa实例对象的所有属性和方法,
而son的实例会同时拥有son和fa类的this指定的属性和方法。
  39:      son.prototype = new fa();
  40:   
  41:      //通过子类构造函数生成实例对象。
  42:      var newBoy = new son();
  43:      //alert(newBoy.fs);//father string
  44:      //alert(newBoy.ss)//son string
  45:   
  46:      /*(这时候弹出的是fa函数的内容而不是son函数的内容)
  47:      不过这样做有几个缺点:这样做实际上是干掉了son的prototype,随之也干掉了son的prototype对象的constructor属性。不过我们也有解决办法。*/
  48:      //alert(son.prototype.constructor)
  49:   
  50:      //son.prototype.constructor = son;
  51:      //alert(son.prototype.constructor); 
  52:   
  53:      //通过get,set方法读写父类的私有属性
  54:      newBoy.setPrivateFs("123");
  55:      alert(newBoy.getPrivateFs());
  56:    </script>
  57:   
  58:   </body>
  59:  </html>

转载于:https://www.cnblogs.com/mrsunny/archive/2011/05/09/2041222.html

javascript 继承、子类化相关推荐

  1. python编程语言继承_如何使用Python继承机制(子类化内置类型)

    我们知道,Python 中内置有一个 object 类,它是所有内置类型的共同祖先,也是所有没有显式指定父类的类(包括用户自定义的)的共同祖先.因此在实际编程过程中,如果想实现与某个内置类型具有类似行 ...

  2. JavaScript继承详解(四)

    文章截图 - 更好的排版 在本章中,我们将分析Douglas Crockford关于JavaScript继承的一个实现 - Classical Inheritance in JavaScript. C ...

  3. 关于如何换肤、子类化的解决方案

    对于应用程序的换肤及子类化.下面是我尝试过一些方法,以在CAboutDlg中子类化其中的Button为例: 第一种:直接用现成的类 1.自己写一个类class CButtonXP : public C ...

  4. JavaScript继承详解(四) 转

    在本章中,我们将分析Douglas Crockford关于JavaScript继承的一个实现 - Classical Inheritance in JavaScript. Crockford是Java ...

  5. 窗口子类化-实例应用

    所谓窗口子类化:改变一个已经存在的窗口实例的性质:消息处理与其他实例属性.   通常在SDK中所谓的窗口子类化就是改变一个窗口函数(如GetWindowLong()和SetWindowLong())通 ...

  6. 动态子类化CComboBox以得到子控件EDIT及LISTBOX

    动态子类化CComboBox以得到子控件EDIT及LISTBOX Joise.LI写于2004-4-6 ComboBox是比较常用的一个控件,有三种样式:CBS_SIMPLE(简单),CBS_DROP ...

  7. Javascript继承机制的设计思想

    我一直很难理解Javascript语言的继承机制. 它没有"子类"和"父类"的概念,也没有"类"(class)和"实例" ...

  8. 浅谈javascript继承【读javascript设计模式第四章节继承有感】

    javascript继承,无任是类式继承,原型式继承还是渗元式继承都是通过不同方法去围绕着prototype转,简单分析下三种不同继承方法是如何围绕prototype转的 一:类似继承,先上关键代码 ...

  9. 探寻完美 之 JavaScript继承

    本文并不想探讨JavaScript的面向对象特性(如果有兴趣,可参看我的<领悟面向对象JavaScript>),也不会涉及全部的面向对象概念,只是试图寻找一个还未被任何人发现的" ...

最新文章

  1. 大数据分析中使用关系型数据库的关键点
  2. android开机启动c程序,如何让A20,android开机自动启动C程序【转】
  3. SAP作业类型应用简介
  4. NSString的几种常用方法
  5. 冷迁移oracle数据库,数据库的冷备份迁移
  6. 女子将车垂直开上标志杆,警方回应...
  7. 计算机网络基础知识 帮助学习网络管理的初学者快速了解网络管理的初步结构知识...
  8. LeetCode每日一题——串联字符串的最大长度
  9. itextsharp创建pdf
  10. mysql免费版稳定吗_mysql免费版好用么
  11. activex控件 java开发_ActiveX控件开发总结
  12. python身份证年龄计算_通过计算当前年份出生y,使用python创建年龄计算器
  13. c语言编程的头文件是什么,C语言头文件到底是什么?
  14. rollup打包压缩和去除注释等无效代码
  15. C/C++百题打卡[5/100]——合唱队形
  16. 【VMware】Assuming drive cache: write through
  17. 云服务器win10系统搭建ftp,win10系统搭建ftp服务器
  18. Docker_数据卷容器
  19. 使用自然语言处理来检测电子邮件中的垃圾邮件
  20. tf.ones、tf.zeros、tf.ones_like、tf.zeros_like、tf.fill、tf.eye、tf.one_hot、tf.range、tf.linspace函数

热门文章

  1. 讨论简书留言界面的设计
  2. Arcgis执行Raster Project时报Error001143 : Background server threw an exception
  3. ts高仿C#的List、Dictionary
  4. php 判断赋值 简写,PHP IF 判断简写
  5. 【java学习之路】(java SE篇)006.异常
  6. java map用二叉树_HashMap
  7. IDEA流式处理 Debug Stream Trace 控制面板
  8. Spark Streaming保存到HDFS目录中案例
  9. js 将点击事件当作参数引入_NodeJS中的事件驱动程序实现原理解析
  10. Git 简介和命令行操作