JavaScript实现多态和继承的封装操作示例


Posted in Javascript onAugust 20, 2018

本文实例讲述了JavaScript实现多态和继承的封装操作。分享给大家供大家参考,具体如下:

封装Encapsulation

如下代码,这就算是封装了

(function (windows, undefined) {
  var i = 0;//相对外部环境来说,这里的i就算是封装了
})(window, undefined);

继承Inheritance

(function (windows, undefined) {
  //父类
  function Person() { }
  Person.prototype.name = "name in Person";
  //子类
  function Student() { }
  Student.prototype = new Person();      //修复原型
  Student.prototype.constructor = Student;  //构造函数
  Student.prototype.supr = Person.prototype; //父类
  //创建子类实例
  var stu = new Student();
  Student.prototype.age = 28;
  Student.prototype.name = "name in Student instance";
  //打印子类成员及父类成员
  console.log(stu.name); //name in Student instance
  console.log(stu.supr.name); //name in Person
  console.log(stu.age); //28
})(window, undefined);

使用在线HTML/CSS/JavaScript代码运行工具 http://tools.3water.com/code/HtmlJsRun,运行结果如下:

JavaScript实现多态和继承的封装操作示例

多态Polymorphism

有了继承,多态就好办了

//这就是继承了
(function (windows, undefined) {
  //父类
  function Person() { }
  Person.prototype.name = "name in Person";
  Person.prototype.learning = function () {
    console.log("learning in Person")
  }
  //子类
  function Student() { }
  Student.prototype = new Person();      //修复原型
  Student.prototype.constructor = Student;  //构造函数
  Student.prototype.supr = Person.prototype; //父类
  Student.prototype.learning = function () {
    console.log("learning in Student");
  }
  //工人
  function Worker() { }
  Worker.prototype = new Person();      //修复原型
  Worker.prototype.constructor = Worker;  //构造函数
  Worker.prototype.supr = Person.prototype; //父类
  Worker.prototype.learning = function () {
    console.log("learning in Worker");
  }
  //工厂
  var personFactory = function (type) {
    switch (type) {
      case "Worker":
        return new Worker();
        break;
      case "Student":
        return new Student();
        break;
    }
    return new Person();
  }
  //客户端
  var person = personFactory("Student");
  person.learning(); //learning in Student
  person = personFactory("Worker");
  person.learning(); //learning in Worker
})(window, undefined);

使用在线HTML/CSS/JavaScript代码运行工具 http://tools.3water.com/code/HtmlJsRun,运行结果如下:

JavaScript实现多态和继承的封装操作示例

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
基于jquery的兼容各种浏览器的iframe自适应高度的脚本
Aug 13 Javascript
js/jquery解析json和数组格式的方法详解
Jan 09 Javascript
js返回前一页刷新本页重载页面
Jul 29 Javascript
js实现顶部可折叠的菜单工具栏效果实例
May 09 Javascript
javascript入门之window对象【新手必看】
Nov 22 Javascript
js单页hash路由原理与应用实战详解
Aug 14 Javascript
Material(包括Material Icon)在Angular2中的使用详解
Feb 11 Javascript
详解Vue取消eslint语法限制
Aug 04 Javascript
解决vue 格式化银行卡(信用卡)每4位一个符号隔断的问题
Sep 14 Javascript
Ant Design Vue 添加区分中英文的长度校验功能
Jan 21 Javascript
Vue使用vue-draggable 插件在不同列表之间拖拽功能
Mar 12 Javascript
Vue执行方法,方法获取data值,设置data值,方法传值操作
Aug 05 Javascript
浅谈微信小程序之官方UI框架we-ui使用教程
Aug 20 #Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
Aug 20 #Javascript
微信小程序 MinUI组件库系列之badge徽章组件示例
Aug 20 #Javascript
获取layer.open弹出层的返回值方法
Aug 20 #Javascript
react.js组件实现拖拽复制和可排序的示例代码
Aug 20 #Javascript
layui弹出层按钮提交iframe表单的方法
Aug 20 #Javascript
详解如何在Vue里建立长按指令
Aug 20 #Javascript
You might like
php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
2012/06/13 PHP
Php output buffering缓存及程序缓存深入解析
2013/07/15 PHP
Laravel中批量赋值Mass-Assignment的真正含义详解
2017/09/29 PHP
javascript 控制弹出窗口
2007/04/10 Javascript
javascript+xml技术实现分页浏览
2008/07/27 Javascript
javascript qq右下角滑出窗口 sheyMsg
2010/03/21 Javascript
JQUBar 基于JQUERY的柱状图插件
2010/11/23 Javascript
DIY jquery plugin - tabs标签切换实现代码
2010/12/11 Javascript
jquery 查找select ,并触发事件的实现代码
2011/03/30 Javascript
jQuery获取选中内容及设置元素属性的方法
2014/07/09 Javascript
jquery实现在页面加载的时自动为日期插件添加当前日期
2014/08/20 Javascript
JS清除文本框内容离开在恢复及鼠标离开文本框时触发js的方法
2016/01/12 Javascript
jQuery Validate插件实现表单验证
2016/08/19 Javascript
解析预加载显示图片艺术
2016/12/05 Javascript
BootStrap 图片样式、辅助类样式和CSS组件的实例详解
2017/01/20 Javascript
Node.js读取文件内容示例
2017/03/07 Javascript
图解Javascript——作用域、作用域链、闭包
2017/03/21 Javascript
vue-cli+webpack记事本项目创建
2017/04/01 Javascript
浅谈webpack下的AOP式无侵入注入
2017/11/12 Javascript
Bootstrap实现可折叠分组侧边导航菜单
2018/03/07 Javascript
Vue 将后台传过来的带html字段的字符串转换为 HTML
2018/03/29 Javascript
基于elementUI竖向表格、和并列的案例
2020/10/26 Javascript
Python中__call__用法实例
2014/08/29 Python
Python使用metaclass实现Singleton模式的方法
2015/05/05 Python
PyQt5每天必学之布局管理
2018/04/19 Python
python的debug实用工具 pdb详解
2019/07/12 Python
python flask几分钟实现web服务的例子
2019/07/26 Python
Django+boostrap 美化admin后台的操作
2020/03/11 Python
CSS3实现3D翻书效果
2016/06/20 HTML / CSS
爱尔兰灯和灯具网上商店:Lights.ie
2018/03/26 全球购物
CNC数控操作工岗位职责
2013/11/19 职场文书
八年级物理教学反思
2014/01/19 职场文书
2014党员四风对照检查材料思想汇报
2014/09/17 职场文书
聘用合同范本
2015/09/21 职场文书
资深HR教你写好简历中的自我评价
2019/05/07 职场文书
python实现图片九宫格分割的示例
2021/04/25 Python