本帖最后由 WDYDXF 于 2014-03-08 23:47:33 编辑

解决方案 »

  1.   

    var testA = {
                t1: "a"
            };         function Pre() {
                testA=function(){
                    alert('1111');
                };
                this.previousTestA;
                this.previousTestA=testA;
            };    var p = new Pre();
        console.log(p.previousTestA())
      

  2.   

     var testA = {
                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的指向的
      

  3.   


    var a = { name: "keatkeat" };
    var b = a;
    a = function () { }
    alert(b.name); //keatkeat
    //当a变成不是对象的时候,b是不会跟着改变的 
      

  4.   

    var a = {name : 'keatkeat'}
    var b = a;
    a = new Object() or b = new Object() ; //这样都可以打断原本的引用
      

  5.   

      var testA = {
                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呢?
      

  6.   

    恩, previousTestA=testA;的意思是不是previousTestA指向了testA的内存地址?我理解的是否错了?
      

  7.   

    b指向了a的内存地址,随后a变化,为什么b没有跟着变化呢?
      

  8.   

    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