JavaScript实现多态和继承的封装操作示例
作者:kkun 发布时间:2024-07-24 00:01:08
标签:JavaScript,多态,继承,封装
本文实例讲述了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);
运行结果如下:
多态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);
运行结果如下:
希望本文所述对大家JavaScript程序设计有所帮助。
来源:http://www.cnblogs.com/kkun/archive/2012/01/06/2314885.html


猜你喜欢
- 一对多(ForeignKey)class ForeignKey(ForeignObject): def __init__(sel
- OpenCV介绍OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Ma
- @num=1; 把num类型转成nvarchar类型 cast(@num as nvarchar(10)) @str='123
- 本文实例讲述了Python实现阿拉伯数字和罗马数字的互相转换功能。分享给大家供大家参考,具体如下:前面一篇介绍了《Java实现的求解经典罗马
- 本文实例讲述了Go语言eclipse环境搭建的方法。分享给大家供大家参考,具体如下:1 下载eclipse2 下载goeclipsehttp
- 本文实例为大家分享了Python实现简易图书管理系统的具体代码,供大家参考,具体内容如下首先展示一下图书管理系统的首页:这是图书管理系统的发
- 一、Pytorch修改预训练模型时遇到key不匹配最近想着修改网络的预训练模型vgg.pth,但是发现当我加载预训练模型权重到新建的模型并保
- 使用vs2010连接mysql 数据库,1.装连接驱动,使用Connector/Net 连接驱动!下载地址:http://dev.mysql
- 在MySQL里,主键索引和辅助索引分别是什么意思,有什么区别?上次的分享我们介绍了聚集索引和非聚集索引的区别,本次我们继续介绍主键索引和辅助
- 最近有个需求,一个列表上下移动要有简单过渡效果,在网上找了找没找到,可能是我搜的关键词不对?试了试 Vue 的 transition-gro
- 前言Github源码地址本文同时也是学习唐宇迪老师深度学习课程的一些理解与记录。文中代码是实现在TensorFlow下使用卷积神经网络(CN
- 自从python2.2提供了yield关键字之后,python的生成器的很大一部分用途就是可以用来构建协同程序,能够将函数挂起返回中间值并能
- JavaScript的函数式编程的对象本质: function a() { var
- 本文实例讲述了PHP实现的MD5结合RSA签名算法。分享给大家供大家参考,具体如下:<?phpclass Md5RSA{
- 先来看个用Python实现的二分查找算法实例import sys def search2(a,m): low = 0 high = le
- 本文实例讲述了Python实现比较两个文件夹中代码变化的方法。分享给大家供大家参考。具体如下:这里将修改代码后的目录与原始目录做对比,罗列出
- NOMONEYDAY123114321-45324212-102250331008为了符合阅读习惯,最终报表希望是如下格式:NOMONTUE
- 依据null-values,MySQL的值为null的意思只是代表没有数据,null值和某种类型的零值是两码事,比如int类型的零值为0,字
- 无意中在csdn上看到一帖有关绘制杨辉三角的sql表达式,感觉很有意思。后来自己想下不借助临时表,根据杨辉三角的组合数计算方法C(n,m)=
- 这是一个非常简单的解决方案,柱状图中每一条柱都是一个 div,数据的大小呈现在 div 的宽或高上。 查看演示 例子下载实现的原理