关于javascript中的类和jquery-1.2.6.js的理解
<!--
 /*
  先申明一点:如果要查看下面的脚本,直接,把//去掉就可以
  javascript定义类的另类方法:var 类名 = {
  成员变量:值,
  成员函数名:function(参数){}
  };
  格式
  
  那么既然是类,怎么实现继承呀?看下例,使用prototype来继承
 */
 
 var cp = {
  tn:23,
  t1:"t1",
  t2:"t2",
  f1:function()
  {
   return "f1";
  },
  f2 : function()
  {
   return "f2";
  }
 };
 
 var cp1={}.prototype = cp;
 //alert(cp1.t1);
 
 /*
  我们继承的目的,是为了实现扩展和多态
 */
 cp1.t3 = "t3";
 cp1.f3 = function(){
  return this.t3;
 }
 /*
  实现了类外部,增加成员变量和成员函数的功能
 */
 cp1.f2 = function(tt){
  return tt;
 }
 /*
  实现了重载,是overwrite的方式,不是overload
 */
 
 //alert(cp1.f2(233));
 //alert(cp.f2(233));
 
 
 /*但是,jQuery,是这样定义的;*/
 var cp = {};
 cp.fn = cp.prototype = {
  t1:23,
  t2:"24",
  f1:function()
  {
   return 123;
  },
  f2 : function()
  {
   return 34;
  }
 };
 cp.fn.f1.prototype = cp.fn;
 //alert(cp.fn.f1());
 
 /*
  此外,jQuery,定义类的样子,非常怪异
 */
 
 (function()
 {
  var jQuery = window.jQuery = window.$ = function( selector, context )
  {
   return new jQuery.fn.init( selector, context );
  };
  
  jQuery.fn = jQuery.prototype={
   init:function(selector,context)
   {
    alert(context);
   }
  };
 })();
 
 //jQuery.prototype.init("selector","context");
 //jQuery.fn.init("selector","context");
 /*
  上面两种,都可以调用到init(selector, context);
  那么,怎么找到jQuery这个变量的呢? 
  那就是,window.jQuery;
  
  再举一例
 */
 //window.tmd= "他妈的";
 /*
  与这种效果相同:
 */
 //var tmp = window.tmd = "他妈的"; 
 /*
  这里不是笔误,就是tmp和tmd
 */
 //alert(tmd + tmp);
 /*
  充分说明了,window.变量,可以使这个变量,变成全局变量,而tmp和window.tmd还有tmd都是相同的
  
  注意,这里有一个怪异的函数定义
  (function()
  {})();
  为什么要这样定义呢?原因很简单:
  看下面这个例子:
 */
 //(function(){alert("ok");})();
 /*
  这里说明一个问题:就是函数在加载的时候,会扫描这个函数,即,function(){alert("OK");}会被执行
  非常类似于函数指针,写得再夸张一点
 */
 //(alert("OK"))();
 /*
  前面括号里面的东西,被执行了;很神奇!!!这种方法,通常用来,生成全局变量用,本例就是;
 */

解决方案 »

  1.   

    第一个问不知道是你想问什么------------------------------------第二个问:
    因为f1只是个函数(构造)
    不需要new个实例才能有属性哦see:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
     <HEAD>
      <TITLE> New Document </TITLE>
      <META NAME="Generator" CONTENT="EditPlus">
      <META NAME="Author" CONTENT="">
      <META NAME="Keywords" CONTENT="">
      <META NAME="Description" CONTENT="">
     </HEAD> <BODY>
      <SCRIPT LANGUAGE="JavaScript">
      <!--
    var cp = {};
    cp.fn = cp.prototype = {   //为什么会使用fn和protype啊?直接cp={..code..}不也一样么?
    t1:23,
    f1:function()
    {
    return 123;
    }
    };
    cp.fn.f1.prototype = cp.fn;//这是什么意思啊?
    //alert(cp.fn.f1());   //我使用alert(cp.fn.f1.t1);不行,提示undefined?
    var o = new cp.fn.f1();
    alert(o.t1);
    //alert(new cp.fn.f1().t1);
      //-->
      </SCRIPT>
     </BODY>
    </HTML>
      

  2.   

    不好意思没看到你有三个问,还有我多加了个“”字
    更正一下 :第1、2问说实话没什么
    1是将cp对象滴属性fn和原型prototype赋值为一个对象{t1:23,...}2同1,将cp的属性fn(是个对象)滴属性f1(函数对象)滴原型赋值为cp.fn(对象)3是因为f1只是个函数接口,没有实例化为对象,当然不可访问属性
    这样就可以了:alert(new cp.fn.f1().t1);
      

  3.   


    我滴失误,更正一下:
    1、2问其实就是给对象cp添加命名属性fn和prototype
    并指向后面滴对象{...}
    因为var cp={}这句已经指明cp是个对象了,故不存在原型之说了
    因为只有function才有这个所谓原型(prototype)属性,而且也是定义时候自动创建和初始化滴
    cp对象只是用了prototype这个名称作为其命名属性,它并不是原型哦
    呵呵,就这麽多...
      

  4.   

    http://topic.csdn.net/u/20080923/22/fb79dbe4-b9e7-4be2-903d-1733943681e5.html
    参考此贴我的回复。
      

  5.   

    发错了,本应该发到你的另一个帖子
    http://topic.csdn.net/u/20081008/21/798d351c-dd52-445d-8c45-e4bb1a490db4.html