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 常用功能总结
Mar 18 Javascript
纯javascript实现自动发送邮件
Oct 21 Javascript
JavaScript通过使用onerror设置默认图像显示代替alt
Mar 01 Javascript
Javascript+CSS3实现进度条效果
Oct 28 Javascript
JavaScript数据结构之二叉树的删除算法示例
Apr 13 Javascript
微信小程序实现登录页云层漂浮的动画效果
May 05 Javascript
angular或者js怎么确定选中ul中的哪几个li
Aug 16 Javascript
webpack+react+antd脚手架优化的方法
Apr 02 Javascript
Layui组件Table绑定行点击事件和获取行数据的方法
Aug 19 Javascript
vue与django集成打包的实现方法
Nov 11 Javascript
vue 实现把路由单独分离出来
Aug 13 Javascript
vue3获取当前路由地址
Feb 18 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
第一个无线电台是由谁发明的
2021/03/01 无线电
php中print(),print_r(),echo()的区别详解
2014/12/01 PHP
php中define用法实例
2015/07/30 PHP
php防止用户重复提交表单
2015/11/02 PHP
FleaPHP框架数据库查询条件($conditions)写法总结
2016/03/19 PHP
PHP随机数 C扩展随机数
2016/05/04 PHP
JavaScript 设计模式学习 Singleton
2009/07/27 Javascript
jquery下jstree简单应用 - v1.0
2011/04/14 Javascript
复选框全选与全不选操作实现思路
2013/08/18 Javascript
jQuery动态背景图片效果实现方法
2015/07/03 Javascript
全面了解JavaScript的数据类型转换
2016/07/01 Javascript
全面解析标签页的切换方式
2016/08/21 Javascript
通过JS和PHP两种方法判断用户请求时使用的浏览器类型
2016/09/01 Javascript
基于BootStrap实现简洁注册界面
2017/07/20 Javascript
Nodejs调用WebService的示例代码
2017/09/29 NodeJs
vue.js 获取select中的value实例
2018/03/01 Javascript
基于打包工具Webpack进行项目开发实例
2018/05/29 Javascript
JavaScript模拟实现自由落体效果
2018/08/28 Javascript
基于layui轮播图满屏是高度自适应的解决方法
2019/09/16 Javascript
Node Express用法详解【安装、使用、路由、中间件、模板引擎等】
2020/05/13 Javascript
JavaScript实时更新当前的时间的示例代码
2020/07/15 Javascript
django限制匿名用户访问及重定向的方法实例
2018/02/07 Python
Python内置函数reversed()用法分析
2018/03/20 Python
flask框架json数据的拿取和返回操作示例
2019/11/28 Python
Pycharm中Python环境配置常见问题解析
2020/01/16 Python
Python3标准库glob文件名模式匹配的问题
2020/03/13 Python
python爬虫请求头设置代码
2020/07/28 Python
H5调用相机拍照并压缩图片的实例代码
2017/07/20 HTML / CSS
Wallis官网:英国女装零售商
2020/01/21 全球购物
研究生自我鉴定范文
2013/10/30 职场文书
秘书岗位职责
2013/11/18 职场文书
汇源肾宝广告词
2014/03/20 职场文书
交通文明倡议书
2014/05/16 职场文书
公司庆典欢迎词
2015/01/26 职场文书
催款函怎么写
2015/06/24 职场文书
解除处分决定书
2015/06/25 职场文书