js靜態屬性和靜態方法


啥也不說了,直接上代碼。。。(就是這么任性)

     var Animal =  function(){};
    Animal.name = "dog";
     var a =  new Animal();

    console.log(a.name); 

結果如圖 :

 

很明顯這樣調用是不可以的,那如果console.log(Animal.name)這樣呢?

     var Animal =  function(){
        Animal.name++;
    };
    Animal.name = 0;
     //  var a = new Animal();

    console.log(Animal.name); 

 

 靜態方法是指不需要聲明類的實例就可以使用的方法

 納尼?結果是這樣了滴。。。。。為毛?

 那這樣呢?

      function Animal (){
         //  alert(Animal.name);
         this.say =  function(){
            console.log(Animal.name);
        }
    };
    Animal.name = "Ev2le0";
     var a =  new Animal();

    a.say(); 

結果是:

 

納尼,哭暈在wc了。。。 

 

算了還是寫靜態方法吧 

     function staticClass(){}; // 聲明一個類
     // 為這個類添加一個靜態方法
    staticClass.staticMethod =  function(){
        console.log("this is a static method");
    }

     // 聲明一個實例方法
    staticClass.prototype.instanceMethod =  function(){
        console.log("this is a instance method");
    }

     // 嘗試調用一下靜態方法,分別使用2種方式
     var a =  new staticClass();

    a.staticMethod(); 

 結果是這樣滴:

 

 再試一下類名.方法名的調用方式

     function staticClass(){}; // 聲明一個類
     // 為這個類添加一個靜態方法
    staticClass.staticMethod =  function(){
        console.log("this is a static method");
    }

     // 聲明一個實例方法
    staticClass.prototype.instanceMethod =  function(){
        console.log("this is a instance method");
    }

     // 嘗試調用一下靜態方法,分別使用2種方式
     var a =  new staticClass();
     //  a.staticMethod();

    staticClass.staticMethod();

 結果是這樣子滴:

 

 那調用實例方法能不能用類名.方法名()的形式呢?

     function staticClass(){}; // 聲明一個類
     // 為這個類添加一個靜態方法
    staticClass.staticMethod =  function(){
        console.log("this is a static method");
    }

     // 聲明一個實例方法
    staticClass.prototype.instanceMethod =  function(){
        console.log("this is a instance method");
    }

     // 嘗試調用一下靜態方法,分別使用2種方式
     var a =  new staticClass();
     //  a.staticMethod();

    staticClass.instanceMethod(); 

 結果是這樣子滴:

 

 總結:

1,對於靜態方法可以使用類名.方法名()

2,實例方法就只能老老實實的使用對象.方法名()的形式調用了。 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM