
让JS写的更接近OOP
发布日期:2021-05-09 07:00:46
浏览次数:10
分类:博客文章
本文共 1964 字,大约阅读时间需要 6 分钟。
下面这段代码就是利用JS原型对象,来实现的类的继承DEMO
$ 为jquery对象
////公共方法// $.oop.newClass=function newClass(obj) {// function create() {// if (obj != null)// return obj();// }// var c = new create();// return c;// }//人var person = $.oop.newClass(function () { //构造函数 function person() { } //公有属性 person.prototype.age = 15; //公有函数 person.prototype.eat = function () { alert("我会吃"); }; return person;});//程序员var programMonkey = $.oop.newClass(function () { //构造函数 function programMonkey() { } programMonkey.prototype = person.prototype;//继承 programMonkey.prototype.skill = "asp.net"; programMonkey.prototype.work = function () { alert("我会加班"); } return programMonkey;});var pm = new programMonkey();//人的函数pm.eat();//程序猿的函数pm.work();//输出属性alert("人家才" + pm.age + "岁,我是一个" + pm.skill + "猿");
因为JS一些特性实现一个多态也非简单
//共用函数//$.oop.newClass = function (obj) {// function Create() {// if (obj != null)// return obj();// }// var c = new Create();// return c;//}var iPerson = $.oop.newClass(function () { //构造函数 function person() { } person.prototype.name; person.prototype.iq; person.prototype.eat; return person;});//程序员var programMonkey = $.oop.newClass(function () { //构造函数 function programMonkey() { } programMonkey.prototype = iPerson.prototype ;//继承 return programMonkey;});//设计湿var designer = $.oop.newClass(function () { //构造函数 function designer() { } designer.prototype = iPerson.prototype ;//继承 return designer;});var inputValue = "程序员";var ip = new iPerson();if (inputValue == "程序员") { ip = new programMonkey(); ip.iq = 0; ip.eat = function (msg) { alert(msg + "吃香蕉") } } else if (inputValue == "设计湿") { ip = new designer(); ip.iq = 100; ip.eat = function (msg) { alert(msg + "吃香蕉") }}ip.name = inputValue; ip.eat("我是"+ip.name+" 智力"+ip.iq+" ");
根据不同的input Value会执行相应的 eat函数
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年03月28日 06时15分27秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Java面向对象之构造器
2019-03-06
Java继承之再谈构造器
2019-03-06
13.罗马数字转整数
2019-03-06
Leetcode数组题*3
2019-03-06
如何用IDEA开启断言
2019-03-06
Java:谈谈控制线程的几种办法
2019-03-06
Java:枚举类也就这么回事
2019-03-06
【Java并发编程】常见基础问题整理
2019-03-06
SpringBoot整合FreeMarker模板引擎
2019-03-06
Java中Runtime类详细总结
2019-03-06
Java并发包源码学习系列:挂起与唤醒线程LockSupport工具类
2019-03-06
由 [SDOI2012]Longge的问题 探讨欧拉函数和莫比乌斯函数的一些性质和关联
2019-03-06
洛谷P5364 [SNOI2017]礼物 题解
2019-03-06
Python基础之用户交互、流程控制、循环语句
2019-03-06
表的相关数据
2019-03-06
IDEA 出现错误:找不到或无法加载主类
2019-03-06
JSP中引用CSS样式文件却无法显示的问题解决方案
2019-03-06
Invalid bound statement (not found)报错的可能原因
2019-03-06
MapReduce之自定义分区器Partitioner
2019-03-06
/dev/null--Linux系统黑洞,解决控制台的刷屏问题
2019-03-06