zoukankan      html  css  js  c++  java
  • javascript面向对象实例

    非私有属性
    function Student(name, gender, age, grade, teacher){      
              this.name = name;     
              this.gender = gender;     
              this.age = age;       
              this.grade = grade;      
              this.teacher = teacher; 
    }     
    var bob = new Student("bob", "male", 15, 10, "Marlow");    
        alert(bob.age); //输出15   
    var susan = new Student("susan", "female", 10, 5, "Gresham");  
        alert(susan.gender); //输出 'female' 
    
    var bob = new Student("bob", "male", 15, 10, "Marlow");   
      alert(bob.age); //输出15     bob.age = 9;  
      alert(bob.age); //输出9; 
    #####################################################################################################################################
    私有属性
    function Student(name, gender, age, grade, teacher)     {      
       var studentName = name;     
       var studentGender = gender;    
       var studentGrade = grade;     
       var studentTeacher = teacher;    
       var studentAge = age;     
           this.getAge = function() {        
                    return studentAge;   
           };         
           this.setAge = function(val){      
                      studentAge = Math.abs(val); //使用绝对值,确保年龄是正值      
           };  
    }     
           var bob = new Student("bob", "male", 15, 10, "Marlow");    
           alert(bob.studentAge); //未定义,因为年龄在类定义中受私有保护    
           alert(bob.getAge()); //输出15     bob.setAge(-20);     alert(bob.getAge()); //输出20 
    #####################################################################################################################################
    动态创建的访问器方法
    function Student( properties ){    
             var $this = this;  //将类范围存储到名为$this的变量中     
                 //迭代处理对象的属性      
                    for ( var i in properties ) {        
                             (function(i) {        
                                          // 动态创建访问器方法      
                                         $this[ "get" + i ] = function(){                
                                                 return properties[i];         
                                                                           };       
                                         })(i);      
                    }   
    }    
                     // 创建一个新的用户对象实例,并传递属性的对象   
                       var student = new Student({Name: "Bob",Age: 15,Gender: "male"});    
                        alert(student.name); //因属性是私有的而未定义   
                        alert(student.getName()); //输出 "Bob"   
                        alert(student.getAge()); //输出15    
                        alert(student.getGender()); //输出 "male" 
    #####################################################################################################################################
    类的继承
    function Worker() {    
         this.getMethods = function(properties, scope)
         {         var $this = scope;  //将类范围存储到名为$this的变量中     
                     //迭代处理对象的属性        
                      for ( var i in properties ){        
                              (function(i){                 // 动态创建访问器方法           
                                        $this[ "get" + i ] = function()           
                                              { 
                                                  return properties[i];
                                                  };             //动态地创建一个分析整数,并确保是正值的更改器方法。         
                                         $this[ "set" + i ] = function(val) { 
                                             
                                                     if(isNaN(val)) { 
                                                         
                                                          properties[i] = val;  
                                                                        
                                                  }else{       
                                                                   
                                                       properties[i] = Math.abs(val); 
                                                       
                                                  } 
                                          }; 
                              })(i);         
                    }     
         }; 
    } 
    // CommissionWorker "子类"和WageWorker "子类" 
    //继承Worker的属性和方法。
     CommissionWorker.prototype = new Worker();
     WageWorker.prototype = new Worker(); 
     
    function CommissionWorker(properties) {     
          this.getMethods(properties, this);     
          //计算收入     
          this.getIncome = function(){        
               return properties.Sales * properties.Commission; 
          } 
    } 
    //要求有下列属性:薪水、每周小时数、每年周数 
    function WageWorker(properties) {     
        this.getMethods(properties, this);   
          //计算收入     
        this.getIncome = function() {        
             return properties.Wage * properties.HoursPerWeek * properties.WeeksPerYear;    
              } 
    } 
    var worker = new WageWorker(Name: "Bob", Wage: 10, HoursPerWeek: 40,WeeksPerYear: 48 }); 
    alert(worker.wage); //未定义。薪水是私有属性。 
    worker.setWage(20); alert(worker.getName());   //输出 "Bob" 
    alert(worker.getIncome()); //输出 38,400 (20*40*48) 
    var worker2 = new CommissionWorker( {     Name: "Sue",     Commission: .2,     Sales: 40000 }); 
    alert(worker2.getName());   //输出 "Sue" 
    alert(worker2.getIncome()); //输出8000(2% 乘40,000) 
  • 相关阅读:
    go 基础(二)
    go 基础(一)
    小程序生成带有多参数的太阳码
    php 3.2 生成压缩文件,并下载
    layer confirm 三种选择按钮
    无限级分类,抓取某元素的所有下级id
    bootstrap 自带字体颜色
    ajaxSubmit 页面生成的html 中含有表单提交表单方式
    php 保留2位小数
    日期范围
  • 原文地址:https://www.cnblogs.com/smile361/p/3517030.html
Copyright © 2011-2022 走看看