日期:2014-05-16  浏览次数:20376 次

javascript 的引用传递问题
 (function () {

            var root = this;

            var test;

            test = root.test = {};

            root.test = {
                showMessage: function (message) {

                    alert(message);
                }
            };

        }).call(this);

        test.showMessage("sdf");


代码如上,为什么报错啊
------解决方案--------------------
外边访问test,肯定从window下找,而上边的代码中有了定义,this指向window root.test={} 即window下的test属性值为空json ,下面自然没有showMessage方法
------解决方案--------------------
你原来的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");


通过这样应该是可以的
------解决方案--------------------
test重新赋值了,跟root.test不再有关联。

这样就对
(function() {

var root = this;

var test;

test = root.test = {};

test.showMessage=function(message) {

alert(message);
}



}).call(this);

test.showMessage("sdf");