博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript中的封装多态和继承
阅读量:6040 次
发布时间:2019-06-20

本文共 1751 字,大约阅读时间需要 5 分钟。

封装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";
 
//打印子类成员及父类成员
alert(stu.name); //name in Student instance
alert(stu.supr.name); //name in Person
alert(stu.age); //28
 
})(window, undefined);

 

多态Polymorphism

有了继承,多态就好办了

//这就是继承了
(function (windows, undefined) {
//父类
function Person() { }
Person.prototype.name = "name in Person";
Person.prototype.learning = function () {
alert("learning in Person")
}
 
//子类
function Student() { }
Student.prototype = new Person();           //修复原型
Student.prototype.constructor = Student;    //构造函数
Student.prototype.supr = Person.prototype;  //父类
Student.prototype.learning = function () {
alert("learning in Student");
}
 
//工人
function Worker() { }
Worker.prototype = new Person();           //修复原型
Worker.prototype.constructor = Worker;    //构造函数
Worker.prototype.supr = Person.prototype;  //父类
Worker.prototype.learning = function () {
alert("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);

转载地址:http://yurhx.baihongyu.com/

你可能感兴趣的文章
如何UDP/TCP端口是否通了
查看>>
pxe实现系统的自动化安装
查看>>
Redis高可用技术解决方案总结
查看>>
Scale Out Owncloud 高可用(2)
查看>>
何为敏捷
查看>>
HA集群之四:Corosync+Pacemaker+DRBD实现HA Mysql
查看>>
服务器定义
查看>>
我的友情链接
查看>>
MYSQL-实现ORACLE- row_number() over(partition by ) 分组排序功能
查看>>
c# 入门 例子
查看>>
HP Designjet 800PS 日常维护
查看>>
rhel7使用fdisk分区时无法使用全部分区的解决办法
查看>>
Docker 清理命令
查看>>
利用NRPE外部构件监控远程主机
查看>>
使用模块化编译缩小 apk 体积
查看>>
router-link传参
查看>>
ios之UISlider
查看>>
短信验证流程
查看>>
php 使用htmlspecialchars() 和strip_tags函数过滤HTML标签的区别
查看>>
OpenCV Error: Assertion failed (data0.dims <= 2 && type == 5 && K > 0) in cv::kmeans
查看>>