`
aijuans
  • 浏览: 1568168 次
社区版块
存档分类
最新评论

看懂它,你就可以任性的玩耍了!

阅读更多

          javascript作为前端开发的标配技能,如果不掌握好它的三大特点:1.原型 2.作用域 3. 闭包 ,又怎么可以说你学好了这门语言呢?如果标配的技能都没有撑握好,怎么可以任性的玩耍呢?怎么验证自己学好了以上三个基本点呢,我找到一段不错的代码,稍加改动,如果能够读懂它,那么你就可以任性了。

function jClass(baseClass, prop) {

     // 只接受一个参数的情况 - jClass(prop)
     if (typeof(baseClass) === "object") {
         prop = baseClass;
         baseClass = null;
     }

     // 本次调用所创建的类(构造函数)
     function F() {
        // 调用init原型函数
        this.init.apply(this, arguments);
     }

     // 如果此类需要从其它类扩展
     if (baseClass) {
        F.prototype = Object.create(baseClass.prototype);
        //重置构造函数的指向
        F.prototype.constructor = F;
     }

     // 覆盖父类的同名函数

    for (var name in prop) {
        if (prop.hasOwnProperty(name)) {
             // 如果此类继承自父类baseClass并且父类原型中存在同名函数name
            if (baseClass && typeof(prop[name]) === "function" &&
                typeof(F.prototype[name]) === "function") {

                 // 重定义函数name - 
                 // 首先在函数上下文设置this.base指向父类原型中的同名函数
                 // 然后调用函数prop[name],返回函数结果
                 // 注意:这里的自执行函数创建了一个上下文,这个上下文返回另一个函数,
                 // 此函数中可以应用此上下文中的变量,这就是闭包(Closure)。
                 // 这是JavaScript框架开发中常用的技巧。

                F.prototype[name] = (function(name, fn) {
                    return function() {
                        this.base = baseClass.prototype[name];
                        return fn.apply(this, arguments);
                    };
                })(name, prop[name]);
                
            } else {
                F.prototype[name] = prop[name];
            }
        }
    }
    return F;
 };

  var Person = jClass({

      init: function(name) {
        this.name = name;
      },

      getName: function() {
          return this.name;

      }

  });

    var Employee = jClass(Person, {

      init: function(name, employeeID) {
        this.base(name);
        this.employeeID = employeeID;
      },

      getEmployeeID: function() {
        return this.employeeID;
      },

      getName: function() {
        return "Employee name: " + this.base();
    }

});

//----------------------------------------------------------

  var zhang = new Employee("ZhangSan", "1234");

  console.log(zhang.getName()); // "Employee name: ZhangSan"

 

其他精彩文章

jQuery教程(19)-jquery ajax操作之序列化表单

jQuery教程(18)-ajax操作之执行POST请求

jQuery教程(17)-ajax操作之向服务器传递数据 执行GET请求

jQuery教程(16)-ajax操作之加载XML文档

 

更多关于android开发文章

1
4
分享到:
评论

相关推荐

    任性诗画--傻瓜式创建动图软件 创建动图就是这么任性

    傻瓜式创作动图、创作动图就是这么简单、就是这么任性!!! 任性诗画能做什么? 文字、诗词生成动图 支持、字的轮流变色 字的逐字显示 行的轮流变色 行的逐行显示 段的轮流变色 立体字、渐进字 描边...

    幼儿园观察记录《幼儿任性行为的观察、分析和处理》.docx

    【知识点详解】 1. 幼儿心理发展:幼儿期...通过上述分析,我们可以看到,解决幼儿任性行为的关键在于理解其心理发展特点,采取适宜的教育策略,并且家长和教师需要形成合力,共同引导孩子形成健康的性格和行为习惯。

    最实用的创意DIY制作,有技术,就这么任性!.df

    ### 最实用的创意DIY制作知识点汇总 #### 1. DIYSD读卡器基于GL823设计 - **核心组件**:GL823读卡...对于刚刚接触电子专业的大学生来说,这些项目是非常好的起点,可以帮助他们更快地掌握实际技能,激发创新思维。

    H5小游戏源码 有钱就任性圣诞版,这个节奏很讨喜!.zip

    “H5小游戏源码 有钱就任性圣诞版,这个节奏很讨喜!”这个标题揭示了几个关键信息。首先,“H5小游戏源码”表明这是一份使用HTML5技术开发的小游戏的原始代码,HTML5是现代网页和移动应用开发的标准语言,具有跨平台...

    小学主题班会感恩父母克服任性PPT教案.pptx

    2. “小皇帝”现象:通过小品表演,孩子们可以直观地看到过于任性的角色——“小皇帝”,并思考这种行为模式的问题所在。这有助于他们自我反思,发现自身可能存在的任性问题。 三、克服任性 1. 坏习惯的影响:任性...

    小游戏源码-有钱就任性圣诞版,这个节奏很讨喜!.rar

    "小游戏源码-有钱就任性圣诞版,这个节奏很讨喜!.rar" 这个标题揭示了我们即将探讨的是一个小型游戏的源代码,特别设计为圣诞节版本,暗示它可能包含与圣诞节相关的主题元素或游戏玩法。"有钱就任性"这个流行语暗示...

    幼儿教育叫你解决孩子任性方法.doc

    在幼儿教育过程中,面对孩子的任性行为,家长常常感到困扰。孩子任性并不是天生的,而是教育方式不当的结果。孩子在3岁前通常较为顺从,但随着成长,他们开始展现出独立性和自我主张,这是性格发展的重要阶段。心理...

    你家的孩子任性吗.docx

    通过耐心倾听、积极引导,以及建立稳定的规则和期望,家长可以帮助孩子逐渐改正任性的行为,同时培养他们的同理心、自控力和社会适应能力。记住,每个孩子的任性行为都有其独特的背景,针对性的教育和引导才是解决...

    有钱就是任性!支付宝“信用卡”花呗随便花.docx

    【支付宝花呗】是支付宝推出的一项虚拟信用支付服务,它并非真正的信用卡,但却具备信用卡的部分功能,让用户在购物时享受“先消费,后付款”的体验。花呗的主要特点包括: 1. **购物支付**:用户可以在淘宝、天猫...

    关于孩子任性的行为.doc

    3. 不懂分享和同理心:任性的孩子往往缺乏分享意识,喜欢独占玩具,不愿等待,容易因小事焦虑和烦躁,这可能导致他们在同伴关系中出现冲突。 4. 自控能力弱:任性的孩子在面对诱惑或挫折时,自我控制力较弱,容易...

    小辣椒任性版root工具

    【小辣椒任性版root工具】是一款专为小辣椒任性版手机设计的ROOT权限获取软件。ROOT是Android系统中的一种操作,允许用户获取设备的管理员权限,以便能够自定义和优化设备,安装需要管理员权限的应用,或者删除预装...

    孩子任性怎么办.doc

    3. 提前约定:了解孩子任性的习惯后,可以在活动开始前与孩子明确规则,比如外出时的行走规则,如果孩子违背,就提醒他之前的约定,以此预防任性的发生。 4. 激将法:利用孩子的竞争意识,激发他们的自尊心和自信心...

    大班幼儿任性行为矫治的实践与研究(课题申报表).docx

    值得注意的是,矫治任性行为并非一蹴而就的过程,它需要教育者和家长的共同努力和耐心。矫治策略的制定应遵循幼儿身心发展的规律,尊重幼儿的个性和需求,同时家园合作也是成功实施矫治策略的关键。在实践中,应注重...

    任性写记事本 v1.5.zip

    任性写记事本是古典小说网推出的一款可以 横、竖、斜、直写文字、添加图片素材装扮、可以生成动图的记事本软件。 任性写记事本功能 任性横、竖、斜线 排列文字段落 任性拖入图片动图等素材装扮记事本 不仅仅是...

    职工食堂买菜没有发票居然可以这样处理!但餐饮发票入账不能任性-必须按这些科目来!.doc

    【知识点详解】 1. **企业食堂账务处理**: - 企业食堂应设立辅助账,用于记录食堂的收入和支出,确保财务透明。...通过设立辅助账、规范发票管理和选择合适的采购渠道,企业可以优化财务管理,降低税务成本。

    任性动图V9.8.1.zip

    任性动图V9.8.1就是针对这种格式进行优化的软件,用户可以通过它来创作各种生动有趣的GIF动图。 首先,文字动图是这款软件的一大亮点。用户可以自由选择字体、颜色、大小,以及动画效果,如闪烁、移动、淡入淡出等...

    -从任性辞职信中读懂理性生活 --条据书信.docx

    因此,当这样一封简单而又直接的辞职信出现时,它就像是一个提醒,让人们意识到除了工作之外,生活中还有更多值得追求的东西。 2. **现实考量**:尽管如此,大多数人还是无法效仿这位教师的做法。首先,经济因素是一...

    从任性辞职信中读懂理性生活.doc

    这封辞职信出自一位女心理教师,只有十个字:“世界那么大,我想去看看。”这十个字简洁而有力,直击人们内心深处对于自由与冒险的渴望。这不仅仅是对现有生活的逃避,更是对于未知世界的积极探索。她的勇敢和决断...

Global site tag (gtag.js) - Google Analytics