下面这段代码就是利用JS原型对象,来实现的类的继承DEMO

$ 为jquery对象

  1. ////公共方法
  2. // $.oop.newClass=function newClass(obj) {
  3. // function create() {
  4. // if (obj != null)
  5. // return obj();
  6. // }
  7. // var c = new create();
  8. // return c;
  9. // }
  10.  
  11. //人
  12. var person = $.oop.newClass(function () {
  13.  
  14. //构造函数
  15. function person() {
  16.  
  17. }
  18.  
  19. //公有属性
  20. person.prototype.age = 15;
  21.  
  22. //公有函数
  23. person.prototype.eat = function () {
  24. alert("我会吃");
  25. };
  26.  
  27. return person;
  28. });
  29.  
  30. //程序员
  31. var programMonkey = $.oop.newClass(function () {
  32.  
  33. //构造函数
  34. function programMonkey() {
  35.  
  36. } programMonkey.prototype = person.prototype;//继承
  37.  
  38. programMonkey.prototype.skill = "asp.net";
  39.  
  40. programMonkey.prototype.work = function () {
  41. alert("我会加班");
  42. }
  43.  
  44. return programMonkey;
  45. });
  46.  
  47. var pm = new programMonkey();
  48. //人的函数
  49. pm.eat();
  50. //程序猿的函数
  51. pm.work();
  52. //输出属性
  53. alert("人家才" + pm.age + "岁,我是一个" + pm.skill + "猿");

因为JS一些特性实现一个多态也非简单

  1. //共用函数
  2. //$.oop.newClass = function (obj) {
  3. // function Create() {
  4. // if (obj != null)
  5. // return obj();
  6. // }
  7. // var c = new Create();
  8. // return c;
  9. //}
  10.  
  11. var iPerson = $.oop.newClass(function () {
  12.  
  13. //构造函数
  14. function person() {
  15.  
  16. }
  17. person.prototype.name;
  18. person.prototype.iq;
  19. person.prototype.eat;
  20. return person;
  21. });
  22.  
  23. //程序员
  24. var programMonkey = $.oop.newClass(function () {
  25.  
  26. //构造函数
  27. function programMonkey() {
  28.  
  29. } programMonkey.prototype = iPerson.prototype ;//继承
  30. return programMonkey;
  31. });
  32.  
  33. //设计湿
  34. var designer = $.oop.newClass(function () {
  35.  
  36. //构造函数
  37. function designer() {
  38.  
  39. } designer.prototype = iPerson.prototype ;//继承
  40. return designer;
  41. });
  42.  
  43. var inputValue = "程序员";
  44.  
  45. var ip = new iPerson();
  46.  
  47. if (inputValue == "程序员") {
  48.  
  49. ip = new programMonkey();
  50. ip.iq = 0;
  51. ip.eat = function (msg) {
  52. alert(msg + "吃香蕉")
  53. }
  54.  
  55. } else if (inputValue == "设计湿") {
  56.  
  57. ip = new designer();
  58. ip.iq = 100;
  59. ip.eat = function (msg) {
  60. alert(msg + "吃香蕉")
  61. }
  62. }
  63. ip.name = inputValue;
  64.  
  65. ip.eat("我是"+ip.name+" 智力"+ip.iq+" ");

根据不同的input Value会执行相应的 eat函数

让JS写的更接近OOP的更多相关文章

  1. CSS 黑魔法小技巧,让你少写不必要的JS,代码更优雅

    首页   登录注册         CSS 黑魔法小技巧,让你少写不必要的JS,代码更优雅 阅读 8113 收藏 927 2017-09-26 原文链接:github.com 腾讯云容器服务CSS,立 ...

  2. JS写小游戏(一):游戏框架

    前言 前一阵发现一个不错的网站,都是一些用html5+css+js写的小游戏,于是打算学习一番,写下这个系列博客主要是为了加深理解,当然也有一些个人感悟,如果英文好可以直接Click Here. 概述 ...

  3. 去它的h5,我还是用js写原生跨平台app吧

    智能手机功能越来越强大,已经在逐渐替代电脑的作用.百度.腾讯.阿里的移动端日活数也在逐步的赶上甚至超越电脑端用户.叫喊着“mobile first”的公司越来越多,App开发者应运而生,且队伍日趋庞大 ...

  4. 分享:计算机图形学期末作业!!利用WebGL的第三方库three.js写一个简单的网页版“我的世界小游戏”

    这几天一直在忙着期末考试,所以一直没有更新我的博客,今天刚把我的期末作业完成了,心情澎湃,所以晚上不管怎么样,我也要写一篇博客纪念一下我上课都没有听,还是通过强大的度娘完成了我的作业的经历.(当然作业 ...

  5. 玩转Javascript 给JS写测试

    给js写测试已经不是什么稀奇的事情了,最近项目里用了jasmine和JsTestDriver两种js测试框架.JsTestDriver易于与持续构建系统相集成并能够在多个浏览器上运行测试轻松实现TDD ...

  6. Groovy系列-groovy比起Java--有哪些地方写起来更舒服?

    groovy比起java-有哪些地方写起来更舒服 java发展缓慢,语法落后冗余 说起java,其实java挺好的,java现在的性能也不错,但是,java的语法显然比较落后,而且冗余,getter/ ...

  7. 使用 Node.js 写一个代码生成器

    背景 第一次接触代码生成器用的是动软代码生成器,数据库设计好之后,一键生成后端 curd代码.之后也用过 CodeSmith , T4.目前市面上也有很多优秀的代码生成器,而且大部分都提供可视化界面操 ...

  8. 前端与编译原理——用JS写一个JS解释器

    说起编译原理,印象往往只停留在本科时那些枯燥的课程和晦涩的概念.作为前端开发者,编译原理似乎离我们很远,对它的理解很可能仅仅局限于"抽象语法树(AST)".但这仅仅是个开头而已.编 ...

  9. JS 写逻辑判断,不要只知道用 if-else 和 switch

    我们在编写 JS 代码时,经常会遇到逻辑判断复杂的情况.一般情况下,可以用 if/else 或 switch 来实现多个条件判断,但会出现一个问题:随着逻辑复杂度的增加,代码中的 if/else 和 ...

随机推荐

  1. NGUI 减少drawcall规则

    前置说明一: Unity中的drawcall定义: 每次引擎准备数据并通知GPU的过程称为一次Draw Call. Unity(或者说基本所有图形引擎)生成一帧画面的处理过程大致可以这样简化描述:引擎 ...

  2. [C] c99int(让VC等编译器自动兼容C99的整数类型)V1.02。源码托管到github、添加CMake编译配置文件、使用doxygen规范注释

    新版本—— http://www.cnblogs.com/zyl910/p/zlstdint_v100.html[C] zlstdint(让VC.TC等编译器自动兼容C99的整数类型)V1.0.支持T ...

  3. 关于NMF(Non-negative Matrix Factorization )

    著名的科学杂志<Nature>于1999年刊登了两位科学家D.D.Lee和H.S.Seung对数学中非负矩阵研究的突出成果.该文提出了一种新的矩阵分解思想――非负矩阵分解(Non-nega ...

  4. asp.net web 后台判断提示框,点击'是'执行代码A(),点击'否'执行代码B()

    html code <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server&q ...

  5. 用etckeeper来解救运维工程师

    对于运维工程师来讲,etc环境是一个痛点,各种配置,各种修改,某些软件的配置关联因素过多的话,那就更加痛苦了,改完发现不对再想改回去都千难万难, 现在有一个好的解决方案,那就是用etckeeper,绝 ...

  6. Why GUID primary keys are a database’s worst nightmare

    http://csharptest.net/1250/why-guid-primary-keys-are-a-databases-worst-nightmare/ When you ask most ...

  7. 利用 a 标签自动解析 url

    很多时候,我们有从 url 中提取域名,查询关键字,变量参数值等的需求,然而我们可以让浏览器方便地帮助我们完成这一任务而不用写正则去抓取.方法就是先创建一个 a 标签然后将需要解析的 url 赋值给  ...

  8. Visual Studio 新建项目报错" this template attempted to load component assembly 'NuGet.VisualStudio.Interop, ….".

    "Error: this template attempted to load component assembly 'NuGet.VisualStudio.Interop, Version ...

  9. AppStore 相关

    App 跳转 AppStore 网址链接   https://itunes.apple.com/app/uri/id582319843?mt=8   https 可替换成 itms,可直接避免进入 S ...

  10. .NET Framework 类库

    .NET Framework 类库 MSDN == V2.0 == .NET Framework 类库是一个由 Microsoft .NET Framework SDK 中包含的类.接口和值类型组成的 ...