鱼C论坛

 找回密码
 立即注册
查看: 2708|回复: 5

[每日一练] 技法63 (◐‿◑) 使用this关键词使代码更可复用

[复制链接]
发表于 2017-8-6 21:08:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

                               
登录/注册后可看大图


按照提示,完成代码,秀秀你的编程能力!

不许看答案,否则打屁屁





分析:
上一个挑战介绍了向duck对象引入一个method。它使用duck.name的点符号来访问return语句中的name属性的值:

sayName:function(){return"这个鸭子的名字是"+ duck.name +".";}

虽然这是访问对象属性的有效方法,但这里存在一个缺陷。如果变量名称更改,则引用原始名称的所有代码都需要更新。在一个简短的对象定义中,它不是问题,但是如果一个对象有很多对它的属性的引用,就有很大的几率产生错误

避免这些问题的方法是使用this关键词:
  1. let duck = {
  2.    name:"Aflac",
  3.    numLegs:2,
  4.    sayName:function(){return"这个鸭子的名字是"+ this.name +".";}
  5. };
复制代码


this是一个很深的话题,上面的例子只是一种使用它的方式。

在当前的语境中,this是指与方法相关联的对象:duck。

如果对象的名称更改为mallard,则无需在代码中找到所有对duck的引用。它使代码可复用并易于阅读。

   





I Need U
修改dog.sayLegs方法以删除对dog的所有引用。使用上面的duck示例进行指导。
   





答案:
游客,如果您要查看本帖隐藏内容请回复





回顾:










如果喜欢,请订阅
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-13 11:02:24 | 显示全部楼层
Merci.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-5 15:24:07 | 显示全部楼层
  3 var dog = {
  4         name:"dog",
  5         age:5,
  6         newway:function(){return this.name+" has four leg";}
  7         }
  8 alert(dog.newway());
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-11 04:31:53 | 显示全部楼层
ddddddddddddd
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-26 09:59:00 | 显示全部楼层
em
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-28 23:28:37 | 显示全部楼层
let dog = {
name: "Spot",
numLegs: 4 ,
sayLegs: function(){return "这只狗有" + this.numLegs+"条腿";}
};
dog.sayLegs()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 15:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表