JavaScript

超轻量级php框架startmvc

JavaScript实现多态和继承的封装操作示例

更新时间:2020-07-21 23:54:01 作者:startmvc
本文实例讲述了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);

使用在线HTML/CSS/JavaScript代码运行工具 http://tools.jb51.net/code/HtmlJsRun,运行结果如下:

多态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.jb51.net/code/HtmlJsRun,运行结果如下:

JavaScript 多态 继承 封装