javascript中什么时候用静态方法什么时候用实例方法,规则是什么,各好在哪儿?

 我来答
Onewarden
2013-04-26 · TA获得超过327个赞
知道小有建树答主
回答量:145
采纳率:100%
帮助的人:142万
展开全部

<script type="text/javascript">

       /*一、静态方法和属性( 类、方法、属性都为静态类型; 不能创建实例访问)*/

        var staticFunc = function(){};

        staticFunc.today = new Date();  //添加静态属性

        staticFunc.weather = "sunny"; 

        staticFunc.show = function(){ //添加静态方法

               alert(this.today + "  weather is " + this.weather);

        };

   

       staticFunc.show(); //静态方法和属性直接访问,不能通过实例访问

       alert(staticFunc.today + " is " + staticFunc.weather);

       //new staticFunc().show();  //这里对staticFunc实例化会导致错误,如下图

       //alert(new staticFunc().today); //这里也会发生同样的错误

 

 

   /*二、普通对象,同时拥有静态和非静态属性、方法 

   (可以用实例化 * 注意:1.静态方法/属性使用类名访问  2.非静态方法/属性使用实例名访问 )*/

       function Person(name){

            this.name = name;  //非静态属性

            this.showName = function(){ //添加非静态方法(添加到“类”的实例上)

                 alert("my name is " + this.name + ".");

            }

       

            Person.run = function(){  //添加静态方法(直接添加到“类”上)

                 alert("I am runing... ...");

            }

       }

       /*通过prototype关键字添加非静态属。每个人的爱好可能不一样

       【1.具有相同的行为就用静态方法或属性,如人类都有一张嘴;2. 具体到每个“类”的每个实体,如每个人的兴趣爱好可能不一样,就用实例方法或属性】*/

       Person.prototype.hobby = "movie,music,programming,reading.";

       //添加静态属性

       Person.hand = 2;

       

       var me = new Person("zhangsan");

       //非静态方法或属性必须通过实例来访问

       me.showName();

       alert("my hobby has " + me.hobby);

       //静态方法必须通过“类”来访问

       Person.run();

       alert("I have " + Person.hand + " hands.");

    </script>

RW1237
2013-04-26
知道答主
回答量:34
采纳率:0%
帮助的人:27.7万
展开全部
来个我思考得出。
看方法里,有没用到this,没用到就用静态方法;反之,就用实例方法。
是吧,很简单\(^o^)/
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式