<script>
   var Class1 = function() {
this.name = "class1"; // if define as "var name = 'class1'", then we cannot use Class1.name
this.showNum = function() {
alert(this.name);
};
   };
   
   var Class2 = function() {
this.name = "class2";
alert("bf"+this.name); // class2
Class1.call(this);
alert("af"+this.name); // class1
   }
   
   var c2 = new Class2();
   c2.showNum(); // class1</script>
为什么alert()结果为"class1"? "Class1.call(this);"到底是把谁的指针给谁呢?
求赐教~JavaScriptcall

解决方案 »

  1.   

    Class1.call(this)
    把Class2的实例的指针给Class1方法
      

  2.   

    给了c2这个对象,call和apply就是改变this作用域用的。。        Class1.call(this);
            //==>等价于指向了下面的代码
            /*this.name = "class1"; 
            this.showNum = function () {
                alert(this.name);
            };*/
      

  3.   

    call了之后,Class2就有了Class1的所有属性和方法,name应该是被覆盖了,参考apply()
      

  4.   

    var Class1 = function() {
    this.name = "class1"; // if define as "var name = 'class1'", then we cannot use Class1.name
    this.showNum = function() {
    alert(this.name);
    };
       };这里面的this就是c2了
      

  5.   

    通过call或者apply来改变对象的this指向,对象冒充就是这么来的