JQuery继承

<script type = "text/javascript">
  // 定义一个类,构造函数;
  var testClass = function() {
    this.name = "Woody";
  };

  // 通过prototype对象定义类的其他成员;
  testClass.prototype = {
    altName: function() {
      testClass.altName( this.name );  // 调用testClass.altName()方法;
    }
  };

  // 实现继承的方法;
  testClass.extend = function(o, p) {
    if ( !p ) { p = o; o = this; }
    for ( var i in p ) o[ i ] = p[  i ];
    return o;
  };

  // 对testClass进行扩展;
  testClass.extend({
    altName: function( str ) {
      alert( "My name is " + str);
    },
    add: function( i ) {
      alert( ++i );
    }
  });

  var tc = new testClass(); // 实例化一个tesClass对象;

  // 反射机制,看tc实例继承了哪些属性方法;
  // 从运行结果来看,它只继承了name,altName();
  for ( var i in tc ) alert( i + " = " + tc[ i ]);

  // 调用tc实例的altName()方法,而在定义中又调用testClass.altName()方法;
  tc.altName();

  // 该方法只能通过类来调用,不能通过实例来调用,比如tc.add(0)就会出错;
  testClass.add( 0 );
</script>

  •  如果对“类”进行extend,那么就是只有类本身才可以使用,相当于静态方法。
  •  如果对本“类”的prototype进行extend,那么“类”的实例也可以使用,相当于实例方法。

JQuery继承_第1张图片
 

你可能感兴趣的:(JQuery继承)