function SuperType(){
    this.colors = ["red","blue","green"];
}function SubType(){
    SuperType.call(this);
}var instance1 = new SubType();
instance1.colors.push("black");
alert(instance1.colors);上面是书上讲解 借用构造函数 的例子。程序里SubType构造函数中的call(this)有什么用,去掉可以吗?去掉后,实例化instance1过程中,调用的SuperType函数中的this指向哪里?

解决方案 »

  1.   

    不可以。
    SuperType.call(this);
    这行代码的作用是,继承父类构造函数中的属性,在这里就是给子类添加colors属性。这个不难理解,去了解一下call方法的作用就行了。
      

  2.   

    call用于改变SuperType中this的指向,call方法传递this后SuperType中this为SubType实例对象,不再是SuperType的了。JavaScript apply与call的用法意义及区别
      

  3.   

     SuperType.call(this); 
    意思是调用 SuperType,让SuperType的 this 指向 SubType实例
      

  4.   

    作用是让SubType拥有SuperType的colors属,就跟继承一样,虽然SubType没有定义colors,但把自己的this传给SuperType类,就可以获取,实际上是执行环境的转移,实现代码复用,详细不,希望采纳,如果还是没有理解,希望将代码在浏览器里面打断点调试一下,就秒懂!