第五次修改中 addOperation 为什么要return this???

第五次修改中 addOperation 为什么要return this???

addOperation 为什么要return this

视频中传入取模方法的参数后,代码应该是这样执行的吧?


this[mod]=function(num1,num2){

return num1%num2

}


this的指向是整个operation对象吗?

麻烦解释一下呗?绕晕了

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

这样写也是为了连缀

比如,我需要调用2次addOperation方法。

我可以:

1、operation.addOperation()

operation.addOperation()像这样分别调用两次

2、operation.addOperation().addOperation()也可以像这样连接在一起调用,叫连缀,也可以说是链式调用

连缀就需要返回原对象,这样每一次调用方法之后返回原对象,就又可以接着调用该方法了。

代码写的多了,就明白这其中意义了,可以先跟着老师的思路去写,多走几遍流程,很多东西先学会用,用的多了,慢慢就了解了。

小丸子爱吃菜 2017-11-30 16:11:40

如果没有相应的符号,那么就去创建相应的符号,如果有这个符号,那么就去调用对象中相应的符号进行计算。

比如下面这个代码:

 operate.addOperation('mod', function (num1, num2) {
		    	return num1 % num2;
		    }).addOperation('power', function (base, power) {
		    	return Math.pow(base, power);
		    }).addOperation('invert', function (num) {
		    	return 1 / num;
		    });

这里面的符号在operation中是没有的,调用addOperation方法,传入参数,没有符号mod,那么operation[name] = fn;就将mod后面的function赋值给mod,也就是

mod: function(num1, num2) {num1 % num2}				

如果有这个mod符号,那么就直接调用对象operation中的运算方法。

祝学习愉快!

  • 提问者 红星双子 #1
    这个逻辑我懂,只是addOperation方法中最后那个return this不理解~ 我是这么理解的: 在【if(!this[name]){this.[name]=fn}】中已经为operation添加了新方法,为什么还要return整个对象呢?
    2017-11-30 17:09:43
小丸子爱吃菜 2017-11-30 14:55:09

这里面的this指向的就是operation这个对象,也可以写return  operation;this永远指向调用它的对象~

祝学习愉快!

  • 提问者 红星双子 #1
    那为什么要在addOperation中return整得对象呢?
    2017-11-30 15:01:07
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师