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 相关文章推荐
js获取指定的cookie的具体实现
Feb 20 Javascript
JavaScript字符串对象slice方法入门实例(用于字符串截取)
Oct 16 Javascript
javascript数组去重方法汇总
Apr 23 Javascript
JS实现不规则TAB选项卡效果代码
Sep 16 Javascript
JavaScript实现url参数转成json形式
Sep 25 Javascript
jQuery实现两列等高并自适应高度
Dec 22 Javascript
js手机号批量滚动抽奖实现代码
Apr 17 Javascript
利用transition实现文字上下抖动的效果
Jan 21 Javascript
angularjs中$http异步上传Excel文件方法
Feb 23 Javascript
微信小程序—setTimeOut定时器的问题及解决
Jul 26 Javascript
JavaScript实现跟随鼠标移动的盒子
Jan 28 Javascript
vue报错function () { [native code] },无法出现我们想要的内容 Unknown custom element
Apr 11 Vue.js
浅谈微信小程序之官方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代码质量36计
2012/09/05 PHP
彻底删除thinkphp3.1案例blog标签的方法
2014/12/05 PHP
初探jquery——表单应用范例
2007/02/20 Javascript
使用JQuery进行跨域请求
2010/01/25 Javascript
jQuery中add()方法用法实例
2015/01/08 Javascript
SyntaxHighlighter 3.0.83使用笔记
2015/01/26 Javascript
iScroll中事件点击触发两次解决方案
2015/03/11 Javascript
js编写当天简单日历效果【实现代码】
2016/05/03 Javascript
js html5 css俄罗斯方块游戏再现
2016/10/17 Javascript
Vue.js用法详解
2017/11/13 Javascript
vue中Npm run build 根据环境传递参数方法来打包不同域名
2018/03/29 Javascript
浅谈vux之x-input使用以及源码解读
2018/11/04 Javascript
利用jsonp解决js读取本地json跨域的问题
2018/12/11 Javascript
jQuery无冲突模式详解
2019/01/17 jQuery
手把手教你使用TypeScript开发Node.js应用
2019/05/06 Javascript
JS实现斐波那契数列的五种方式(小结)
2020/09/09 Javascript
解决Can't find variable: SockJS vue项目的问题
2020/09/22 Javascript
[48:31]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第一场 2月2日
2021/03/11 DOTA
简单介绍利用TK在Python下进行GUI编程的教程
2015/04/13 Python
详解Python中的strftime()方法的使用
2015/05/22 Python
Python3.6日志Logging模块简单用法示例
2018/06/14 Python
Python定义函数时参数有默认值问题解决
2019/12/19 Python
对python中各个response的使用说明
2020/03/28 Python
Python自动重新加载模块详解(autoreload module)
2020/04/01 Python
python使用openpyxl操作excel的方法步骤
2020/05/28 Python
Python同时迭代多个序列的方法
2020/07/28 Python
咖啡为什么会有酸味?你喝到的咖啡為什麼是酸的?
2021/03/17 冲泡冲煮
打印机墨盒:123Inkjets
2017/02/16 全球购物
英国运动服、设备及配件网站:DW Sports
2019/12/04 全球购物
自我鉴定范文300字
2013/10/01 职场文书
标准导师推荐信(医学类)
2013/10/28 职场文书
校长就职演讲稿
2014/01/06 职场文书
事假请假条范文
2014/04/11 职场文书
三好生演讲稿
2014/09/12 职场文书
四风问题查摆剖析材料
2014/10/11 职场文书
python编程简单几行代码实现视频转换Gif示例
2021/10/05 Python