关于javascript中静态成员和实例成员的详细解释

Posted 萧诺

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于javascript中静态成员和实例成员的详细解释相关的知识,希望对你有一定的参考价值。

 

关于javascript中静态成员和实例成员的详细解释 

     在我们了解什么是静态成员和实例成员之前,我们首先来了解一下什么是实例?  

   实例就是由构造函数创建出来的对象。

     例如案例中 p 就是实例:   

     function Person() {}//  此函数为构造函数   

     var p=new Person();  // p为构造函数创建出来的对象

     我们在讨论静态成员和实例成员时候,把函数当成构造函数, 把创建出来的对象称之为实例。在此明白了什么是实例,下面我们就可以说什么是静态  成员和实例成员了。

  首先什么是实例成员?

   实例成员:由构造函数创建出来的对象能直接访问的属性和方法,包括:对象本身 以及原型中的所有的属性和方法。

   案例如下: function Person(name, age) {

                             this.name = name;  

                              this.age = age;  

                                  }

                 Person.prototype.sayHi = function() {

                                                       console.log("hello, rose");   

                                                    };  

                                              var p = new Person("jack", 19);    

                                ( p.name  p.age  p.sayHi)  括号内三个就是实例成员了。

          再次什么是静态成员?

          静态成员:由构造函数直接访问到的属性和方法。大家注意是直接访问的属性和方法,间接获取就不是了。

          案例如下: function Person(name, age) {  

                                              this.name = name;

                                                    this.age = age;  

                                                      }

                               var p = new Person("jack", 19);                

                            Person.say = function() {    alert("这是静态方法");            };        

                                     Person.say  就是静态成员            

                                      Person.length  也是静态成员,因为length是函数中的 方法,是来直接获取函数中形参的个数。

                           接下来会有人问,在实际工作中有什么用?我个人认为工作中用到的机会不多,有人会说工作中既然用的不多,  干嘛还废那么话来说,但是对于我们看Jquery源码是有用处的。         

      jQuery 的 each方法就是给静态成员实现这个方法,然后实例成员直接调用这个方法(大多数框架中都是使用该方法) 。    

        所有有了两种使用方式:

                $.each("div",function(){}) 

                $("div").each(function(){})                    

以上是关于关于javascript中静态成员和实例成员的详细解释的主要内容,如果未能解决你的问题,请参考以下文章

关于类中静态成员函数和静态成员变量的知识点

关于静态方法和非静态方法

JavaScript面向对象ES6类的语法静态成员与实例成员

Java中静态成员与实例成员的使用方法和区别

python中类的详细介绍及使用

c# 静态成员和实例成员的区别