最近我也在研究这个东西
虽然迷迷糊糊的知道一些,但还没到让别理解的那一步。所以我,我只有推荐一篇文章给你 希望能帮到你。
http://www.cn-cuckoo.com/2007/08/01/understand-javascript-closures-72.html

解决方案 »

  1.   

    在js中理解oop最重要的是理解什么是构造方法,什么是原形。给你一个典型的类定义的例子:var Human = function(name,sex){       //想定义一个类,首先是定义它的构造方法。构造方法中,this指向当前被构造的对象
      this.name = name;
      this.sex = sex;
    }
    //定义了构造方法之后,构造方法具有prototype属性,该属性本身是一个Object,在使用new运算符的时候,会首先复制这个原形,然后将构造方法放到这个新对象里运行。
    Human.prototype.run = function(){
      alert(this.name + "is running");
    }
    Human.prototype.age = 0;
    Human.prototype.growUp = function(){
      this.age++;
    }此时Human.prototype的内容为:
    {
      age:0,
      run:function(){//上面的方法}
      growUp:function(){//上面的方法}
    }var guojing = new Human("GuoJing",true);  使用这样的方法来创建对象,首先会复制上面的Human.prototype,然后在对象内部运行构造方法Human(),将构造参数设置进去。这样guojing内容为:
    {
      name:"GuoJing",
      sex:true,
      age:0,
      run:function(){//上面的方法}
      growUp:function(){//上面的方法}
    }说得够详细了么?关于JavaScript中的面向对象其实还有很多地方是值得讨论的,但是一定要从理解原型/构造方法开始。
      

  2.   

    prototype应该都需要的吧,呵呵,和JAVA里的不一样
    5楼说的很好的,支持
      

  3.   

    慢慢来 ,不过你可以先这么去理解:javascript中有Object和FunctionFunction是一个特殊Object如果你要为Object添加一个属性或方法,只需要Object.xx = xx;这样就可以但Function比较特殊 ,你可以把它当做一个Object使用,更重要的他还可以通过prototype为自身添加成员,通过prototype添加的成员必须被new之后才可以访问 
      

  4.   


    准确地说是可以为Function的实例function添加prototype的成员,使其在new的时候具备该属性。深入点研究的话会知道,Function本身也是个构造器,也具有prototype,比如这样:
    Function.prototype.alertContent = function(){
      alert("This function is:\n"this);
    }
    (function(){
      var f = "gagaga",
    }).alertContent()Function.prototype中我们最常用到的成员就是call和apply啦。