我正在使用codecademy进行训练,但是我注意到预期的结果与完成音符建议的结果不同,即使我得到了通过标记。
1。 这是使对象更灵活的好方法。在person对象下,编写另一个名为friend的变量,并将其设置为等于一个名为name的键的对象。 name的值应该是你朋友的名字。
您可以创建另一个对象文字:
let friend = { name: 'name here' };
2。 在好友对象下,将
friend.sayHello
设置为person.sayHello
。friend.sayHello = person.sayHello;
这会将名为
sayHello
的密钥添加到friend对象,并将其设置为person.sayHello
内的方法。person.sayHello
方法使用this关键字。当朋友对象调用它时会是什么?3。 在main.js的底部,使用
console.log()
打印调用friend.sayHello()
的输出并注意控制台中的输出。它记录了你朋友的名字而不是你的名字,因为这意味着改变了朋友对象,其名称密钥不同。
let day = 'Wednesday';
let alarm;
let person = {
name: 'William',
age: 29,
weekendAlarm: 'No alarms needed',
weekAlarm: 'Alarm set to 7AM',
sayHello: () => {
return 'Hello, my name is ${this.William}';
},
sayGoodbye(){
return 'Goodbye!'
}
};
//Friend
let friend = {
name: 'Preston'
};
//changing functions
friend.sayHello = person.sayHello;
if (day === 'Saturday' || day === 'Sunday') {
alarm = 'weekendAlarm';}
else {
alarm = 'weekAlarm';
}
console.log(person['name']);
console.log(person['age']);
console.log(person[alarm]);
person.hobbies = ['Pimping', 'Poon Slaying'];
person.hobbies = 'slayin hoes';
console.log(person['hobbies']);
console.log(person.sayHello());
//logging friend to console.log
console.log(friend.sayHello());
说明书建议最后的“你好,我的名字是......” 应该是“你好,我的名字是普雷斯顿。”
我的代码不这样做。我做错什么了吗?或者如果学习机器在标准方面不是最新的,我是否需要将其报告为错误?
您在这篇文章中所做的贡献可能不仅仅是帮助我。
答案 0 :(得分:0)
您的代码“正常工作”的原因有三个:
您使用箭头功能来定义sayHello
:使用this
的方式不同。在您的情况下,它将是未定义的(或非严格模式下的全局对象)。您需要使用function
关键字来定义它(或ES6 shorthand syntax - 请参阅下文)。
模板文字(带${ }
)需要反引号作为分隔符,而不是正常引号。正如你现在所做的那样,只需将${ }
作为文字文本。
this.William
引用不存在的属性,它应该是this.name
。
更正的相关部分:
let person = {
name: 'William',
sayHello() {
return `Hello, my name is ${this.name}`;
}
};
// Friend
let friend = {
name: 'Preston'
};
// Assigning functions
friend.sayHello = person.sayHello;
// Logging friend to console.log
console.log(friend.sayHello());
答案 1 :(得分:0)
您的代码存在一些问题。
1,箭头功能没有"这个"
sayHello: () => {
return 'Hello, my name is ${this.William}';
},
您必须使用与定义sayGoodbye
的方式相同的简短语法,或使用传统语法function(){...}
2,模板文字语法错误
不是'
,而是'`'
3,变量名称错误:
return 'Hello, my name is ${this.William}';
正确的是this.name
所以,正确的版本是:
let person = {
name: 'William',
age: 29,
...
sayHello() {
return `Hello, my name is ${this.name}`;
},
...
};