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 相关文章推荐
复选框全选与全不选操作实现思路
Aug 18 Javascript
JavaScript fontsize方法入门实例(按照指定的尺寸来显示字符串)
Oct 17 Javascript
jQuery实现输入框下拉列表树插件特效代码分享
Aug 27 Javascript
JS实现响应鼠标点击动画渐变弹出层效果代码
Mar 25 Javascript
VUE element-ui 写个复用Table组件的示例代码
Nov 18 Javascript
9种使用Chrome Firefox 自带调试工具调试javascript技巧
Dec 22 Javascript
Node中使用ES6语法的基础教程
Jan 05 Javascript
vue自定义全局组件(自定义插件)的用法
Jan 30 Javascript
AngularJS双向数据绑定原理之$watch、$apply和$digest的应用
Jan 30 Javascript
React 组件转 Vue 组件的命令写法
Feb 28 Javascript
vue中axios请求的封装实例代码
Mar 23 Javascript
vue总线机制(bus)知识点详解
May 10 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
漫荒推荐:画风超赞的国风漫画推荐 超长假期不无聊
2020/03/08 国漫
php trim 去除空字符的定义与语法介绍
2010/05/31 PHP
php中取得URL的根域名的代码
2011/03/23 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
2013/12/02 PHP
php读取csv文件并输出的方法
2015/03/14 PHP
PHP简单实现HTTP和HTTPS跨域共享session解决办法
2015/05/27 PHP
javascript 兼容鼠标滚轮事件
2009/04/07 Javascript
javascript查找字符串中出现最多的字符和次数的小例子
2013/10/29 Javascript
javascript中数组的sort()方法的使用介绍
2013/12/18 Javascript
js调用浏览器打印模块实现点击按钮触发自定义函数
2014/03/21 Javascript
jquery获得当前html页面源码的方法
2015/07/14 Javascript
关于在Servelet中如何获取当前时间的操作方法
2016/06/28 Javascript
Jquery和Js获得元素标签名称的方法总结
2016/10/08 Javascript
微信小程序 生命周期和页面的生命周期详细介绍
2017/01/19 Javascript
vue的全局提示框组件实例代码
2018/02/26 Javascript
Vue.js自定义事件的表单输入组件方法
2018/03/08 Javascript
详解在React中跨组件分发状态的三种方法
2018/08/09 Javascript
JS打印彩色菱形的实例代码
2018/08/15 Javascript
微信小程序自定义tabBar的踩坑实践记录
2020/11/06 Javascript
[01:02:06]LGD vs Mineski Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
python如何为被装饰的函数保留元数据
2018/03/21 Python
keras实现多种分类网络的方式
2020/06/11 Python
详解用Python调用百度地图正/逆地理编码API
2020/07/02 Python
Microsoft Advertising美国:微软搜索广告
2019/05/01 全球购物
Puccini乌克兰:购买行李箱、女士手袋网上商店
2020/08/06 全球购物
企业演讲比赛主持词
2014/03/18 职场文书
需求分析说明书
2014/05/09 职场文书
医学专业大学生求职信
2014/07/12 职场文书
高三语文复习计划
2015/01/19 职场文书
工作自我评价范文
2015/03/05 职场文书
2015学生会文艺部工作总结
2015/04/03 职场文书
幼儿园综治宣传月活动总结
2015/05/07 职场文书
自书遗嘱范文
2015/08/07 职场文书
Jupyter notebook 不自动弹出网页的解决方案
2021/05/21 Python
python析构函数用法及注意事项
2021/06/22 Python
Golang日志包的使用
2022/04/20 Golang