javascript中借用构造函数问题

何-小鱼 2017-06-08 10:30:11

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指向哪里?
...全文
315 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
希望之盾 2017-06-18
  • 打赏
  • 举报
回复
作用是让SubType拥有SuperType的colors属,就跟继承一样,虽然SubType没有定义colors,但把自己的this传给SuperType类,就可以获取,实际上是执行环境的转移,实现代码复用,详细不,希望采纳,如果还是没有理解,希望将代码在浏览器里面打断点调试一下,就秒懂!
秋风_irwin 2017-06-17
  • 打赏
  • 举报
回复
 SuperType.call(this); 
意思是调用 SuperType,让SuperType的 this 指向 SubType实例
  • 打赏
  • 举报
回复
call用于改变SuperType中this的指向,call方法传递this后SuperType中this为SubType实例对象,不再是SuperType的了。 JavaScript apply与call的用法意义及区别
functionsub 2017-06-08
  • 打赏
  • 举报
回复
不可以。
SuperType.call(this);
这行代码的作用是,继承父类构造函数中的属性,在这里就是给子类添加colors属性。 这个不难理解,去了解一下call方法的作用就行了。

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧