(function(){
  var DOC = document;
  Ext.Element = function(element, forceNew){
   .................
   .................
  }
  var D = Ext.lib.Dom,
      DH = Ext.DomHelper,
      E = Ext.lib.Event,
      A = Ext.lib.Anim,
      El = Ext.Element,
      EC = Ext.elCache;
    El.prototype = {
           name1:fn(){
           },
           name2:fn(){
           }
           .........
           .........
      }
})();这是Element对象在Extjs3.2中的模型,可以直接使用Ext.Element.name1();调用原型中的方法
而像这样:
   (function() {
 var goo=function(id){
 alert("goo执行了");
 
 };
 goo.prototype={
ok:function(){
alert("ok执行了");
},
    bye:function(){
     alert("bye执行了");
    }
 }; })();
goo.ok();
提示goo未定义,这是怎么回事????
JavaScriptExt JS

解决方案 »

  1.   

     (function() {
     var goo=function(id){
     alert("goo执行了");
     
     };
     goo.prototype={
    ok:function(){
    alert("ok执行了");
    },
        bye:function(){
         alert("bye执行了");
        }
     };
    window.goo = goo;
    })();goo函数在红色函数内部,外部无法访问的
    如果要访问,请加上蓝色部分代码
      

  2.   

    fns = { };
    (function() {
    fns.goo = function(id) {
    //alert("goo执行了"); };
    fns.goo.prototype = {
    ok : function() {
    alert("ok执行了");
    },
    bye : function() {
    alert("bye执行了");
    }
    }; })();
    var f=new fns.goo("dd");
    f.ok();
    这样就能访问goo的方法了了,但不使用new即 fns.goo.ok()提示:TypeError: fns.goo.ok is not a function
    这又是怎么回事???
      

  3.   

    new fns.goo. prototype.ok()fns.goo.prototype = {
    ok : function() {
    alert("ok执行了");
    },

    你自己看阿
      

  4.   

    这儿都是在模拟java中静态方法的调用,怎样不使用new 调用原型中的方法??
      

  5.   

    变量作用域问题,在函数内用var声明的变量,只在函数作用域内可以访问,出了作用域就访问不到了。
      

  6.   

    你这是作用域出问题了,把var goo声明提到外面来就可以了