为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript语言精粹-函数-Apply调用模式

JavaScript语言精粹-函数-Apply调用模式

守着一只汪 2018-09-06 17:23:09
在JavaScript中,原型prototype的实际意义?在《JavaScript语言精粹》中30面。关于Apply调用模式。有以下代码:var Quo = function(string){    this.status = string; };//标记1Quo.prototype.get_status = function(){    return this.status; };var myQuo = new Quo("confused");var statusObject = {    status:'A-OK'; };//这里的结果status = 'A-OK'//原文注释:statusObject并没有继承自Quo.prototype, 但我们可以在statusObject上调用get_status方法,//尽管statusObject并没有一个名为get_status的方法。 //标注2var status = Quo.prototype.get_status.apply(statusObject);这里个人理解原型就是属于对象的,类似于java中static属性。代码中的Quo.prototype.get_status就相当于标记1中的方法体。只不过它属于原型链的,所有在链节点后的对象都可以调用。标注2:实际上就等于var status = 标注2后的方法(this);this = statusObject;也就是调用了status.status;这里的get_status跟statusObject有半毛钱关系吗?只是将这个对象传递给了Quo的get_status方法的this参数。以上,个人就不是很明白文中的注释到底是什么意思?写了一堆,这里根本就不是statusObject调用的方法。求JS大神解释,谢谢!
查看完整描述

1 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

  1. prototype的意义在于节约内存,你不必为每个对象都添加方法,只需要在构造器的prototype上添加,这样构造出来的对象就都有prototype上的方法了。

  2. Quo.prototype.get_status.apply(statusObject)就是调用get_status方法,并把statusObject当做get_status方法体里的this,如果get_status方法里没有用到this,就可以像调用普通函数一样调用了Quo.prototype.get_status()。原文注释里说我们可以在statusObject上调用get_status方法,并没有说是statusObject在调用get_status方法啊,只是调用了这个方法。另外类似这个东西不好说,可以说类似也可以说不类似,从一方面说相似,从另一方面说又不同,这个看个人理解就行。


查看完整回答
反对 回复 2018-10-21
  • 1 回答
  • 0 关注
  • 604 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号