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 相关文章推荐
return false;和e.preventDefault();的区别
Jul 11 Javascript
javascript中的继承实例代码
Apr 27 Javascript
使用JavaScript实现Java的List功能(实例讲解)
Nov 07 Javascript
关于Javascript 对象(object)的prototype
May 09 Javascript
javascript连续赋值问题
Jul 08 Javascript
JS验证逗号隔开可以是中文字母数字
Apr 22 Javascript
JS集成fckeditor及判断内容是否为空的方法
May 27 Javascript
小程序获取周围IBeacon设备的方法
Oct 31 Javascript
解决layui table表单提示数据接口请求异常的问题
Sep 24 Javascript
jquery实现上传文件进度条
Mar 26 jQuery
vue下载二进制流图片操作
Oct 26 Javascript
JavaScript实现瀑布流布局的3种方式
Dec 27 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
无线电广播的开始
2002/01/30 无线电
PHP4.04简明安装
2006/10/09 PHP
Bootstrap+PHP实现多图上传功能实例详解
2018/04/08 PHP
PDO::getAvailableDrivers讲解
2019/01/28 PHP
PHP 实现 WebSocket 协议原理与应用详解
2020/04/22 PHP
javascript和jquery修改a标签的href属性
2013/12/16 Javascript
js触发select onchange事件的小技巧
2014/08/05 Javascript
jQuery使用fadeout实现元素渐隐效果的方法
2015/03/27 Javascript
深入浅析JavaScript中的scrollTop
2016/07/11 Javascript
jQuery实现可展开折叠的导航效果示例
2016/09/12 Javascript
简单谈谈gulp-changed插件
2017/02/21 Javascript
nodejs简单读写excel内容的方法示例
2018/03/16 NodeJs
Vue2.0 实现单选互斥的方法
2018/04/13 Javascript
js实现简单选项卡功能
2020/03/23 Javascript
jQuery实现的模仿雨滴下落动画效果
2018/12/11 jQuery
微信小程序云开发之新手环境配置
2019/05/16 Javascript
小程序识别身份证,银行卡,营业执照,驾照的实现
2019/11/05 Javascript
通过高德地图API获得某条道路上的所有坐标用于描绘道路的方法
2020/08/24 Javascript
vue中echarts的用法及与elementui-select的协同绑定操作
2020/11/17 Vue.js
WebPack工具运行原理及入门教程
2020/12/02 Javascript
Python实现的简单万年历例子分享
2014/04/25 Python
Python访问MySQL封装的常用类实例
2014/11/11 Python
Python中的if、else、elif语句用法简明讲解
2016/03/11 Python
Python脚本完成post接口测试的实例
2018/12/17 Python
Python Pandas实现数据分组求平均值并填充nan的示例
2019/07/04 Python
Python基于codecs模块实现文件读写案例解析
2020/05/11 Python
python网络编程之五子棋游戏
2020/05/14 Python
基于python生成英文版词云图代码实例
2020/05/16 Python
用HTML5制作视频拼图的教程
2015/05/13 HTML / CSS
马来西亚银饰品牌:JEOEL
2017/12/15 全球购物
世界上最受欢迎的钓鱼诱饵:Rapala
2019/05/02 全球购物
c语言常见笔试题总结
2016/09/05 面试题
支部书记四风问题自我剖析材料
2014/09/29 职场文书
教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
业务员岗位职责
2015/02/03 职场文书
职工培训工作总结
2015/08/10 职场文书