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");