应该是这样,对不起哈
(function () {
 
            var root = this;
 
            var test;
 
            test = root.test = {};
 
            test = {
                showMessage: function (message) {
 
                    alert(message);
                }
            };
 
        }).call(this);
 
        test.showMessage("sdf");

解决方案 »

  1.   

    外边访问test,肯定从window下找,而上边的代码中有了定义,this指向window root.test={} 即window下的test属性值为空json ,下面自然没有showMessage方法
      

  2.   

    你原来的root.test自己赋值了{}之后又把指针传给了test变量,但是test={showMessage}里面又把自己的指针给重新改掉了,所以此时修改test不会改变root.test
    (function () {
      
                var root = this;
      
                var test = {};
    test["fun"]={};

                root.test = test;

                test["fun"]= {
                    showMessage: function (message) {
      
                        alert(message);
                    }
                };
    //console.log(test);
      
            }).call(this);

            test["fun"].showMessage("sdf");
    通过这样应该是可以的
      

  3.   

    test重新赋值了,跟root.test不再有关联。这样就对
    (function() { var root = this; var test; test = root.test = {}; test.showMessage=function(message) { alert(message);
    }

    }).call(this); test.showMessage("sdf");