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

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

封装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.supr.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);

转载于:https://www.cnblogs.com/syf/archive/2012/11/10/2764086.html

你可能感兴趣的文章
js bool true false 比较
查看>>
Stream(流)的基本操作
查看>>
使用 GIT 获得Linux Kernel的代码并查看,追踪历史记录
查看>>
反向传播神经网络极简入门
查看>>
Objective-C中的@dynamic
查看>>
STORM在线业务实践-集群空闲CPU飙高问题排查(转)
查看>>
Section Formula
查看>>
预处理指令
查看>>
笔记本CPU的型号和类型的区分方法
查看>>
fzu2020( c(n,m)%p,其中n, m, p (1 <= m <= n <= 10^9, m <= 10^4, m < p < 10^9, p是素数) )
查看>>
发送邮件(E-mail)方法整理合集
查看>>
(转)sqlite developer注册方法
查看>>
最大值 最小值 最初值 最末值
查看>>
Anagrams
查看>>
iphone手机分辨率--持久维护
查看>>
DRP——Servlet(一)
查看>>
pydoc介绍
查看>>
使用rsyslog+loganalzey收集日志显示客户端ip
查看>>
EF实现主从表自动生成主键保存
查看>>
Atitit.程序包装exe启动器 打包 发布 设计 -生成exe java
查看>>