不二如是 发表于 2017-8-6 21:08:44

技法63 (◐‿◑) 使用this关键词使代码更可复用

http://xxx.fishc.com/forum/201705/05/225545py2j222x5z6x55n2.png

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

不许看答案,否则打屁屁



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

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

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

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

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

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

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

   



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



答案:
**** Hidden Message *****



回顾:

技法62 (◐‿◑) 在对象上创建一个方法






○面试题索引贴●
如果喜欢,请订阅{:10_303:} :
HTML5 - 庖丁解牛 + JavaScript - 庖丁解牛

Ruide 发表于 2018-3-13 11:02:24

Merci.

向一朵朵鲜花 发表于 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());

dsa159245 发表于 2018-7-11 04:31:53

ddddddddddddd

a211827754 发表于 2018-9-26 09:59:00

em

jack6666 发表于 2022-10-28 23:28:37

let dog = {
name: "Spot",
numLegs: 4 ,
sayLegs: function(){return "这只狗有" + this.numLegs+"条腿";}
};
dog.sayLegs()
页: [1]
查看完整版本: 技法63 (◐‿◑) 使用this关键词使代码更可复用