zoukankan      html  css  js  c++  java
  • 简单的JavaScript类封装实现类操作

    想用JS实现类封装结构,根据红色警戒写了一个超小示例。

    非常希望有高手提改进意见!以后扩充。

    RA2.js

     1 /***RA2***/
     2 
     3 console.log("RA2");
     4 var CountryGroup = Object.freeze({"A":"A","R":"R"});
     5 //console.log(CountryGroup.R);
     6 //console.log(Object.keys(CountryGroup)[CountryGroup.A]);
     7 
     8 var TankType = Object.freeze({"CannonTank":"CannonTank","LightTank":"LightTank"});
     9 
    10 var Country = function(name, countryGroup){
    11     
    12     var _name = name, 
    13         _countryGroup = countryGroup
    14 
    15     this.GetName = function(){return _name;}
    16     this.SetName = function(newName){_name = newName;}
    17     this.GetCountryGroup = function(){return _countryGroup;}
    18     this.SetCountryGroup = function(newCountryGroup){_countryGroup = newCountryGroup;}
    19 
    20     this.CreateHeavyFactory = function(){
    21         var heavyFactory = new HeavyFactory(this);
    22         return heavyFactory;
    23     }
    24 
    25 }
    26 
    27 var HeavyFactory = function(country){
    28     var _country = country
    29 
    30     this.GetCountry = function(){return _country;}
    31     this.SetCountry = function(newCountry){_country = newCountry;}
    32 
    33     this.CreateTank = function(country, tankType){
    34         var tank;
    35         switch(tankType){
    36             case TankType.CannonTank:
    37                 tank = new CannonTank(country);
    38                 break;
    39             default:
    40                 tank = new LightTank(country);
    41                 break;
    42         }
    43         
    44         return tank;
    45     }
    46 
    47 }
    48 
    49 var Tank = function(country){
    50     var _country = country
    51 
    52     this.Run = function(){}
    53 
    54     this.Fire = function(){}
    55 }
    56 
    57 var LightTank = function(country){
    58     Tank.call(this,country);
    59 
    60     this.Run = function(){console.log("fast run");}
    61 
    62     this.Fire = function(){console.log("common fire");}
    63 }
    64 
    65 var CannonTank = function(country){
    66     Tank.call(this,country);
    67 
    68     this.Run = function(){console.log("slow run");}
    69 
    70     this.Fire = function(){console.log("fast fire");}
    71 }

    调用方法示例:

     1 <script type="text/javascript">
     2 
     3 var c = new Country("CHN",CountryGroup.R);
     4 var hf = c.CreateHeavyFactory(c);
     5 
     6 var tankA = hf.CreateTank(c, TankType.CannonTank);
     7 tankA.Run();
     8 tankA.Fire();
     9 
    10 var tankB = hf.CreateTank(c, TankType.LightTank);
    11 tankB.Run();
    12 tankB.Fire();
    13 
    14 </script>
    How to use it
  • 相关阅读:
    Ubuntu 安装vsftp软件(已测试)
    linux 防火墙打开端口/屏蔽IP等
    PhpStorm+PhpStudy+xdebug 配置图解
    MongoDB 学习笔记(五)索引
    linux vi 编辑器命令
    mongodb添加用户和认证
    Linux下Nodejs安装(完整详细)
    键盘数字与字母对应的快捷键
    Webservce、WCF、WebApi的区别
    MongoDB 学习笔记(四)C# 操作MongoDB
  • 原文地址:https://www.cnblogs.com/bluelight4587/p/14041367.html
Copyright © 2011-2022 走看看