javascript 的对象学习

  1. /**  
  2.  * window级别对象 使用para: value 方式定义  
  3.  * 也可以理解为静态类  
  4.  * 可以直接访问其内部的方法和属性  
  5.  * testWindowClass.id testWindowClass.m()  
  6.  */  
  7. var testWindowClass = {   
  8.     //属性   
  9.     id: "WId0",   
  10.     //方法   
  11.     m : function() {   
  12.         alert("window object method");   
  13.     }   
  14. }   
  15.   
  16. /**  
  17.  * 扩展window对象的扩展方法   
  18.  * 为对象增加方法或属性  
  19.  * 直接访问 testWindowClass.method3()  
  20.  */  
  21. testWindowClass.method3 = function() {   
  22.     alert("--window method3--");   
  23. };   
  24.   
  25. /**  
  26.  * 普通JS对象  
  27.  * 类似JAVA中的CLASS类  
  28.  * 使用this.param = value; 方式定义  
  29.  * 初始化对象后才可以访问其内部的属性和方法  
  30.  * var t = testObjectClass();  
  31.  * t.objectMethod(); t.id;  
  32.  */  
  33. var testObjectClass = function() {   
  34.     //方法   
  35.     this.objectMethod = function() { alert("--object class method--"); };   
  36.     //属性   
  37.     this.id = 0;   
  38. }   
  39.   
  40. /**  
  41.  * 普通JS对象  
  42.  */  
  43. var testBaseClass = function() {   
  44.     //id: "0"  --error   
  45.     this.id="0";   
  46.     this.method1=function(){ alert("----testBaseClass:method1()----"); }   
  47.      
  48.     //扩展testObjectClass对象 类似于继承 testBaseClass继承testObjectClass   
  49.     testObjectClass.apply(this);   
  50.      
  51.     //将testWindowClass.method3方法应用到testBaseClass对象中去执行   
  52.     testWindowClass.method3.apply(this);   
  53. }   
  54.   
  55. //扩展类的方法 原型(prototype)链方式   
  56. testBaseClass.prototype.method2 = function() {   
  57.     alert("----testBaseClass:method2()----");   
  58. };   
  59.   
  60. //测试方法   
  61. function test() {   
  62.     var test44 = new testBaseClass();   
  63.     //alert(test44.id);   
  64.     //test44.method1();   
  65.     //alert(testWindowClass.id);   
  66.     //alert(testBaseClass.id);   
  67.     //test44.method2();   
  68.     //testWindowClass.method3();   
  69.     test44.objectMethod();   
  70. }   
  71.   
  72. //-----------------------------------------------------------   
  73.   
  74. /**  
  75.  * 一些JS框架源码中使用的对象声明方式  
  76.  * var Obj = (function() {  
  77.  *    //私有属性  
  78.  *    this.id = 0;  
  79.  *    //私有方法  
  80.  *    this.m = function(){alert("some method")};  
  81.  *    return {  
  82.  *        //公有方法  
  83.  *        init : function() {this.id = 1;}  
  84.  *    };    
  85.  * })();  
  86.  *  
  87.  * 该对象声明使用匿名函数 var Obj = (function() {})()  
  88.  * 注意 该段代码的结尾处加上了'()' 表示声明后立即执行该段函数  
  89.  * 使用方式 Obj.init();  
  90.  * 这其中的 Obj的内容即为执行匿名函数的结果  
  91.  * 在上面的匿名函数执行后会返回 { init : function(){} };这个对象  
  92.  * 这是就可以直接通过 Obj.init(); 调用其返回的对象中的方法  
  93.  * 这种方式实现了私有方法/属性与公有方法属性的分离  
  94.  * 只有return对象中的方法/属性是可见的  
  95.  */  
  96.   
  97. //-----------------------------------------------------------   
  98.   
  99. /**  
  100.  * 一个应用测试  
  101.  */  
  102. //定义一个基础教师类   
  103. var BaseTeacher = function() {   
  104.     this.id = 0;   
  105.     this.type = "base teacher";   
  106.     this.showInfo = function() {   
  107.         alert("----showInfo teacher'type: " + this.type);   
  108.     };   
  109. }   
  110.   
  111. //给基础教师类增加name属性   
  112. BaseTeacher.prototype = {   
  113.     name: "I don't know!"  
  114. }   
  115.   
  116. //定义一个中文教师类   
  117. var ChineseTeacher = function() {};   
  118. //中文教师类继承基础教师   
  119. ChineseTeacher.prototype = new BaseTeacher();   
  120. //修改中文教师类的type属性值   
  121. ChineseTeacher.prototype.type = "chinese teacher";   
  122.   
  123. //定义一个英文教师类   
  124. var EnglishTeacher = function() {};   
  125. //英文教师类继承基础教师   
  126. EnglishTeacher.prototype = new BaseTeacher();   
  127. //修改英文教师类的type属性值   
  128. EnglishTeacher.prototype.type = "english teacher";   
  129.   
  130. //定义一个意大利语教师类   
  131. var ItalyTeacher = function() {   
  132.     //将基础教师类的属性方法赋给意大利语教师对象   
  133.     BaseTeacher.apply(this);   
  134. }   
  135.   
  136. function testBase() {   
  137.     //var baseTeacher = new BaseTeacher();   
  138.     //alert("teacher'type: " + baseTeacher.type);   
  139.     //alert("teacher'name: " + baseTeacher.name);   
  140.     var chineseTeacher = new ChineseTeacher();   
  141.     var englishTeacher = new EnglishTeacher();   
  142.     var italyTeacher = new ItalyTeacher();   
  143.     //alert("chineseTeacher.type: " + chineseTeacher.type);   
  144.     //alert("chineseTeacher.id: " + chineseTeacher.id);   
  145.     //chineseTeacher.showInfo();   
  146.     //alert("englishTeacher.type: " + englishTeacher.type);   
  147.     //alert("englishTeacher.id: " + englishTeacher.id);   
  148.     //englishTeacher.showInfo();   
  149.     italyTeacher.showInfo();   
  150. }   
  151. //---end---  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于计算机专业的学生而言,参加各类比赛能够带来多方面的益处,具体包括但不限于以下几点: 技能提升: 参与比赛促使学生深入学习和掌握计算机领域的专业知识与技能,如编程语言、算法设计、软件工程、网络安全等。 比赛通常涉及实际问题的解决,有助于将理论知识应用于实践中,增强问题解决能力。 实践经验: 大多数比赛都要求参赛者设计并实现解决方案,这提供了宝贵的动手操作机会,有助于积累项目经验。 实践经验对于计算机专业的学生尤为重要,因为雇主往往更青睐有实际项目背景的候选人。 团队合作: 许多比赛鼓励团队协作,这有助于培养学生的团队精神、沟通技巧和领导能力。 团队合作还能促进学生之间的知识共享和思维碰撞,有助于形成更全面的解决方案。 职业发展: 获奖经历可以显著增强简历的吸引力,为求职或继续深造提供有力支持。 某些比赛可能直接与企业合作,提供实习、工作机会或奖学金,为学生的职业生涯打开更多门路。 网络拓展: 比赛是结识同行业人才的好机会,可以帮助学生建立行业联系,这对于未来的职业发展非常重要。 奖金与荣誉: 许多比赛提供奖金或奖品,这不仅能给予学生经济上的奖励,还能增强其成就感和自信心。 荣誉证书或奖状可以证明学生的成就,对个人品牌建设有积极作用。 创新与研究: 参加比赛可以激发学生的创新思维,推动科研项目的开展,有时甚至能促成学术论文的发表。 个人成长: 在准备和参加比赛的过程中,学生将面临压力与挑战,这有助于培养良好的心理素质和抗压能力。 自我挑战和克服困难的经历对个人成长有着深远的影响。 综上所述,参加计算机领域的比赛对于学生来说是一个全面发展的平台,不仅可以提升专业技能,还能增强团队协作、沟通、解决问题的能力,并为未来的职业生涯奠定坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值