zoukankan      html  css  js  c++  java
  • 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,实例方法就只能老老实实的使用对象.方法名()的形式调用了。 

  • 相关阅读:
    一个很实用的css3兼容工具很多属性可以兼容到IE6
    html5 canvas 填充渐变形状
    找到任何形状的中心-总结篇
    html canvas非正方旋转和缩放...写的大多是正方的有人表示一直看正方的看厌了
    把jQuery的类、插件封装成seajs的模块的方法
    那些年实用但被我忘掉javascript属性.onresize
    总有一些实用javascript的元素被人遗忘在角落-slice
    jquery(入门篇)无缝滚动
    html5 canvas旋转+缩放
    今天看到这篇新闻之后,决定休息一下咯
  • 原文地址:https://www.cnblogs.com/EvileOn/p/5515216.html
Copyright © 2011-2022 走看看