zoukankan      html  css  js  c++  java
  • Javascript类的写法

    Javascript中function即为类,在function内部用this设置类的public成员变量与方法,例如:

     [javascript] view plaincopy

    1. function myclass(name){  
    2.     var str = "private string";    //private field  
    3.   
    4.     function privatefn(){      //private method         alert(str);  
    5.     };  
    6.   
    7.     this.name = name;  
    8.   
    9.     this.pubfn = function(){  
    10.         privatefn();      //call private method  
    11.         alert("myclass.pubfn");  
    12.     }  
    13. }  

    使用时用new创建对象:

    [javascript] view plaincopy
    1. var obj = new myclass("123");  
    2. var name = obj.name;    //access public field  
    3. obj.pubfn();        //call public method  

    上述是Javascript类最普通的写法,实际应用得较少,用得最多的是写成静态类的形式,Javascript的静态类有两种写法:

    1. 类似Json对象的写法

    [javascript] view plaincopy
     
    1. var myclass = {  
    2.     name : "123",  
    3.   
    4.     pubfn : function(){  
    5.         alert("pubfn1 is called");  
    6.     }  
    7. };  

    调用形式:myclass.name, myclass.pubfn()

    这种写法使类的成员的访问权限均为public。

    2. 匿名函数的写法

    [javascript] view plaincopy
    1. var myclass = function(){  
    2.     var name = "123";        //private field  
    3.   
    4.     var privatefn = function(){        //private method  
    5.         alert(name);  
    6.     }  
    7.   
    8.     return{                 //return public field and method  
    9.         Name: "hello " + name,    //public field  
    10.   
    11.         pubfn : function(){  
    12.             privatefn();                //call private method  
    13.             alert("this is a returned function"); //public method  
    14.         }  
    15.     }  
    16. }();  

    这种写法的好处是可以将私有和共有的成员方法和变量分开,实际应用中可将复杂的逻辑写的私有方法中,而return一个公用的接口调用私有方法。

    调用形式:myclass.Name, myclass.pubfn()

    注意类结尾处的小括号,它的作用是创建对象,去除小括号的话,则调用形式为:myclass().Name, myclass().pubfn()。

  • 相关阅读:
    爬虫之初试
    [已解决]疑问:关于postgres的to_number()
    随笔
    简单的任意列数均匀布局
    去除VS2010中中文注释下的红色波浪线
    DataTable举例
    DevExpress::XtraBars::BarEditItem获取EditValue值事件
    List<String^>^ 引用空间
    TreeList的VisibleNodesCount,Noes.Count,AllNdoesCount以及焦点节点的删除
    获取工程的exe文件的所在目录
  • 原文地址:https://www.cnblogs.com/xuan52rock/p/4538527.html
Copyright © 2011-2022 走看看