var testA = { t1: "a" }; function Pre() { testA=function(){ alert('1111'); }; this.previousTestA; this.previousTestA=testA; }; var p = new Pre(); console.log(p.previousTestA())
var a = { name: "keatkeat" }; var b = a; alert(a === b); //true a.name = "xinyao"; alert(b.name); // xinyao alert(a === b); //true a = function () { }; //a = new Object() or b = new Object() ; //这样都可以打断原本的引用 alert(a === b); //false
t1: "a"
}; function Pre() {
testA=function(){
alert('1111');
};
this.previousTestA;
this.previousTestA=testA;
}; var p = new Pre();
console.log(p.previousTestA())
t1: "a"
};
(function (x) {
this.previousTestA='';
previousTestA=testA;
testA=function(p1){
alert(p1);
};
}).call(this);
alert(previousTestA.t1);
你的previousTestA指的是哪个对象 之后testA指向了一个函数 这时候previousTestA还是哪个对象
也就是说你的操作一开始是让testA和previousTestA都指向了哪个js对象 之后testA又指向了一个函数 但不影响previousTestA的指向的
var a = { name: "keatkeat" };
var b = a;
a = function () { }
alert(b.name); //keatkeat
//当a变成不是对象的时候,b是不会跟着改变的
var b = a;
a = new Object() or b = new Object() ; //这样都可以打断原本的引用
t1: "a"
}; function Pre() {
testA = function () {
alert('1111');
};
this.previousTestA;
this.previousTestA = testA;
testA = function () {
alert('2222');
};
}; var p = new Pre();
console.log(p.previousTestA())
为什么还是1111?
this.previousTestA = testA;
使得this.previousTestA指向testA的内存地址,对吧?
随后修改了testA,为什么this.previousTestA没有变化为2222呢?
var b = a;
alert(a === b); //true
a.name = "xinyao";
alert(b.name); // xinyao
alert(a === b); //true
a = function () { }; //a = new Object() or b = new Object() ; //这样都可以打断原本的引用
alert(a === b); //false