main.js:
function initComp(){
  var sel=function(){
    alert("initComp");
  }
}我在a.jsp页面中引入了main.js。然后a.jsp页面初始化时执行如下js方法:function init(){
  initComp.prototype.sel=function(){
    alert("init");
  }
  initComp();
}
输出的是initComp.我想要输出的是init,哪里做错了吗?谢谢

解决方案 »

  1.   


    function initComp(){
      var sel=function(){
        alert("initComp");
      }
    }
    function init(){
      initComp.prototype.sel=function(){
        alert("init");
      }
      initComp();
    }
    init();
    var obj = new initComp();
    obj.sel();prototype指定的方法是实例方法,要new出来的对象才能访问到.
      

  2.   

    你这个不需要prototype,prototype的使用方式不是这样的
    而且你就你现在这点代码,init执行时什么都不会输出才对
    搞不懂你想做什么
    你还是先补补面向对象的基础再尝试prototype吧,不然你连它的用处都不知道,勉强使用有什么用?
      

  3.   

    你即使调用了 init() 函数,sel() 也不会自动执行。init() 现在是一个对象,调用时只执行初始化部分。这样才能执行 sel():var s = new init();  // 初始化对象,赋值给 s 变量
    s.sel();         // 调用对象中的 prototype 函数
      

  4.   

    直接 initComp.prototype.sel()  呵
      

  5.   

    是我没弄明白prototype的意思。我漏了一些东西,这个确实输不出来。
    源代码是在代码main.js中是为一个按键的click事件注册了sel方法。点击按键时弹出对话框。
    现在的想法是main.js是不允许修改的,我能不能在a.jsp中把sel方法改掉。