<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,那么“类”的实例也可以使用,相当于实例方法。
