function Class1() {}     Class1.prototype.getName = function() { alert('Class1') };     Class1.prototype.getName();运行结果的确弹出了对话框,这里 prototype 指向了什么对象?

解决方案 »

  1.   

    但Class1并没有实例,怎么会弹出?
      

  2.   


      function Class1() {}        Class1.prototype.getName = function() { alert('Class1') };        Class1.prototype.getName();
    JS里 方法也是属性 如果我给化简下这样 你应该可以懂var getName = function(){ alert('Class1')};
    getName();
    // 跟上面的含义上时等价的.这里的getName是绑定在全局window上的 相当于window.getName
    // 而你上面的getName是绑定在Class1的原型上的.而原型本身就是个对象
      

  3.   

    Class1.prototype :直接返回原型的实例!
      

  4.   

    这么比喻可能恰当一点,相当于你创建了一个static对象
    不需要实例就可以调用准确点说,是js里一切都是对象,包括你的class1,你给这个对象创建了一个方法(相当于静态的),然后直接调用
      

  5.   


    <script type="text/javascript">
    <!--
    function Class1(){}var obj = new Object();alert(Class1.prototype instanceof Object);//看下关系
    obj.getName = function(){ alert('Class1') };
    obj.getName();
                //-->
    </script>
      

  6.   

    再问一下,下面的代码:     function Class1() {}     Class1.getName = function() { alert('Class1') };     Class1.getName();
    和前面的例子 仅 从最后调用 getName 方法来说,有什么不同?
      

  7.   

    Class1.getName = function() { alert('Class1') };Class1.getName();是给Class1一个属性,绑在该对象上口才不好,不太好表述,还是代码的例子吧
    function Class1() {}            Class1.getName = function() { alert('Class1') };            Class1.getName();            var cs2=new Class1();
                cs2.getName(); //undefine
                
                
                function Class1() {}            Class1.prototype.getName = function() { alert('Class1') };            Class1.prototype.getName();            var cs2=new Class1();
                cs2.getName(); //class1
      

  8.   

    这样看起来和原型方式一样,那么第二种方法的 getName 所依附的对象是否就是 prototype 对象?也就是说,Class1.prototype.getName() 和 Class1.getName() 是不是相同的?