美文网首页
js中的实例成员、实例方法、静态成员、静态方法

js中的实例成员、实例方法、静态成员、静态方法

作者: 流星大石头 | 来源:发表于2017-09-18 15:38 被阅读170次
* 实例成员:
* 提供给实例使用的方法和属性,就称之为实例成员。
* 实例方法:
* 提供给实例使用的方法,就称之为实例方法。
 * 静态成员(类成员):
* 提供给函数使用的方法和属性,就称之为静态成员。
* 静态方法(类方法):
* 提供给函数使用的方法,就称之为静态方法。
* 类:
* 在ES6之前,通常我们会把构造函数当做是类。

  function Person( name, age, MAX_AGE ) {
            /*
            * 这里通过this添加的实例成员,
            * 都是添加到了实例自身上。
            * */
            // 这是实例成员,因为这是供实例使用的。
            this.name = name;

            // 这是实例成员,因为这是供实例使用的。
            this.age = age;

            // 这是实例成员,因为这是供实例使用的。
            // 实例成员的作用面比较窄,
            // 这里代表某个人最大的年龄
            this.MAX_AGE = MAX_AGE;
}

// 这是静态成员,因为这是添加给函数使用的。
// 静态成员的作用面更广,代表的含义也更广。
// 我们这里代表整个人类最大的年龄
Person.MAX_AGE = 300;
Person.prototype = {
    constructor: Person,
     // 这是实例成员,因为这是供实例使用的。
    // 但是这里的属性和方法,并没有添加到实例自身。
     run: function(  ) {
    // 为了减少冗余,复用静态方法
      Person.run( this.age );
    }
 }

// 如果一些方法,通用性已经很强了,
// 那么就可以考虑把他加到函数中作为静态方法使用。
Person.run = function( age ) {
    if ( age < 5 ) {
           console.log( '趴着跑' );
     }else if ( age >= 5 && age <= 16 ) {
          console.log( '跳着跑' );
      }else if ( age > 16 && age < 30 ) {
          console.log( '跑酷' );
      }else {
                console.log( '拄着拐杖跑' );
     }
 }
* 为什么都是实例方法复用静态方法:
* 因为。静态方法服务的面更广,即可以服务实例,
* 也可以服务其他的地方,所以实例方法可以复用静态方法( 即实例方法中可以使用静态方法解决问题 )。
* 而实例方法只服务于实例,没法服务与更多的地方,
* 所以静态方法无法复用实例方法( 即静态方法中无法使用实例方法解决问题 )。


function Person() {
}
 // 这里是extend 即时静态方法,又是实例方法
 Person.extend = Person.prototype.extend = function( obj ) {
      for ( var key in obj ) {
          this[ key ] = obj[ key ];
      }
 };

* 预期,谁调用extend,就给谁混入内容;
* 那么这就和this相关了,内置的实现就要使用this。
// 预期给Person自己添加静态成员
Person.extend({
 });
// 预期给Person的实例自己添加实例成员
 Person.prototype.extend({
 });

相关文章

  • TypeScript 03——成员方法定义与调用

    类中的成员分为: 静态成员 和 实例成员;静态成员包含了:静态属性 和 静态方法;实例成员包含了:实例属性 和 实...

  • js中的实例成员、实例方法、静态成员、静态方法

  • 枚举enum实现抽象方法

    这是一个常见的枚举类,枚举由成员属性和成员方法组成,偶尔有静态方法,静态方法用来遍历所有实例,判断实例的成员属性值...

  • 关于静态方法

    静态方法会在类加载之后就分配响应的内存空间,因此注意两点 不能在静态方法中调用实例成员和实例方法 不能再静态方法中...

  • 静态成员和实例成员

    静态成员定义在构造函数上面的成员(属性和方法) 实例成员定义在实例对象上面的成员(属性和方法) 建议 代码示例

  • static 关键字

    修饰类的成员变量和成员方法 静态成员为类的实例所共享 静态方法不能重载,为静态 修饰类 只能修饰内部类。有三个特点...

  • 静态与非静态

    静态与非静态的区别:1.在非静态类中,既可以有非静态成员(实例成员),也可以有静态成员;2.在调用实例成员的时候,...

  • 四、JNI-成员和方法

    成员 方法 #1. 成员 Java中成员变量分为普通成员变量和静态成员变量。普通成员变量也称为类实例成员变量,所有...

  • 静态成员

    原型成员:原型对象上的属性或者是方法。实例成员:实例对象上的属性或者方法。静态成员:直接添加在构造函数上的属性和方...

  • JS中的实例方法与静态方法

    一、静态方法与实例方法的例子: 我们先来看一个例子来看一下JS中的静态方法和实例方法到底是什么 静态方法: 实例方...

网友评论

      本文标题:js中的实例成员、实例方法、静态成员、静态方法

      本文链接:https://www.haomeiwen.com/subject/mmdbsxtx.html