我在打印人名时遇到问题。
我试过person1.printName()
、printName(person1)
这样的组合,但都不起作用。你能给我什么建议吗?
const printName = function() {
console.log(this.name);
}
const person1 = {
name: 'Aaron Towels'
}
const person2 = {
name: 'Tom Clancy'
}
您需要将人员作为参数传递给您的函数:
const printName = function(person) {
console.log(person.name);
}
const person1 = {
name: 'Aaron Towels'
}
const person2 = {
name: 'Tom Clancy'
}
printName(person1);
printName(person2);
有3个选项:
- 使用
Function.prototype.bind
const bound_p1 = printName.bind(person1);
bound_p1();
或更短的语法
printName.bind(person2)();
const printName = function() { console.log(this.name); }
const person1 = { name: 'Aaron Towels' };
const person2 = { name: 'Tom Clancy' };
const bound_p1 = printName.bind(person1);
bound_p1();
printName.bind(person2)(); // shorter syntax
- 添加值为
printName
的print
属性
const printName = function() { console.log(this.name); }
const person1 = { name: 'Aaron Towels', print: printName };
const person2 = { name: 'Tom Clancy', print: printName };
person1.print();
person2.print();
- 使用
Object destructuring
调整printName
方法
const printName = function({name}) { console.log(name); }
const person1 = { name: 'Aaron Towels' };
const person2 = { name: 'Tom Clancy' };
printName(person1);
printName(person2);
在"的情况下;需要在不改变功能的情况下进行锻炼">,我建议您可以使用选项1来完成。