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 相关文章推荐
JavaScript 浏览器验证代码(来自discuz)
Jul 17 Javascript
jquery中实现标签切换效果的代码
Mar 01 Javascript
最常用的12种设计模式小结
Aug 09 Javascript
jQuery中next()方法用法实例
Jan 07 Javascript
JavaScript实现的双向跨域插件分享
Jan 31 Javascript
JavaScript编写连连看小游戏
Jul 07 Javascript
AngularJS中实现显示或隐藏动画效果的方式总结
Dec 31 Javascript
AngularJs bootstrap搭载前台框架——准备工作
Sep 01 Javascript
如何在AngularJs中调用第三方插件库
May 21 Javascript
vue router demo详解
Oct 13 Javascript
详解Webpack实战之构建 Electron 应用
Dec 25 Javascript
微信小程序实现多选功能
Nov 04 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
php4的session功能评述(二)
2006/10/09 PHP
一篇入门的php Class 文章
2007/04/04 PHP
深入解读php中关于抽象(abstract)类和抽象方法的问题分析
2014/01/03 PHP
php查询mysql大量数据造成内存不足的解决方法
2015/03/04 PHP
分享自定义的几个PHP功能函数
2015/04/15 PHP
php实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】
2016/11/10 PHP
Javascript 两个窗体之间传值实现代码
2009/09/25 Javascript
jQuery Ajax使用 全解析
2010/12/15 Javascript
div+css+js实现无缝滚动类似marquee无缝滚动兼容firefox
2013/08/29 Javascript
AngularJS 表达式详细讲解及实例代码
2016/07/26 Javascript
JavaScript中子对象访问父对象的方式详解
2016/09/01 Javascript
Bootstrap栅格系统学习笔记
2016/11/25 Javascript
微信小程序 POST请求的实例详解
2017/09/29 Javascript
解决vue 更改计算属性后select选中值不更改的问题
2018/03/02 Javascript
基于vue.js中关于下拉框的值默认及绑定问题
2018/08/22 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
小程序实现列表删除功能
2018/10/30 Javascript
使用express获取微信小程序二维码小记
2019/05/21 Javascript
8个有意思的JavaScript面试题
2019/07/30 Javascript
使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解
2020/02/06 NodeJs
jQuery列表动态增加和删除的实现方法
2020/11/05 jQuery
[01:38]完美世界DOTA2联赛(PWL)宣传片:第一站
2020/10/26 DOTA
python pickle 和 shelve模块的用法
2013/09/16 Python
Python中表达式x += y和x = x+y 的区别详解
2017/06/20 Python
Python实现数据可视化看如何监控你的爬虫状态【推荐】
2018/08/10 Python
在Python中给Nan值更改为0的方法
2018/10/30 Python
python+os根据文件名自动生成文本
2019/03/21 Python
Python面向对象之Web静态服务器
2019/09/03 Python
pytorch::Dataloader中的迭代器和生成器应用详解
2020/01/03 Python
python两种注释用法的示例
2020/10/09 Python
HTML页面中添加Canvas标签示例
2015/01/01 HTML / CSS
美国正宗奢华复古手袋、珠宝及配饰网站:What Goes Around Comes Around
2018/07/21 全球购物
2014年质量管理工作总结
2014/12/01 职场文书
水电工程师岗位职责
2015/02/13 职场文书
教师党员自我评价2015
2015/03/04 职场文书
Windows下redis下载、redis安装及使用教程
2021/06/02 Redis