ES6功能解构

时间:2017-11-18 07:16:56

标签: javascript object ecmascript-6

通过使用正在破坏的es6功能,在对象中如果我们制作了一些方法,那么我们也可以提取那些方法,作为我们可以的属性,当我尝试这样做时,请看看上面的代码



let person = {
  name: "Ravi",
  favGames: ["cricket", "Badminton", "Tennis"],
  displayFavGames() {
    this.favGames.forEach(game => {
      console.log("My gave game " + game)
    })
  }
}
person.displayFavGames();

let displayData = ({
  name,
  favGames,
  displayFavGames
}) => {
  return `My name is ${name} and my cofavourite games is 
                    ${displayFavGames}`;
}

console.log(displayData(person));




2 个答案:

答案 0 :(得分:2)

displayFavGames是一个函数,因此您需要调用它。

但由于它是对象的属性并使用this,因此您需要使用属性表示法来调用它:object.displayFavGames()。如果解构参数,则可以这样做,因为您没有引用原始对象的变量。您可以将参数作为单个变量获取,然后在初始化局部变量时使用解构。

如果你想替换该函数的结果,它需要返回一个字符串,而不是使用console.log()

let person = {
  name: "Ravi",
  favGames: ["cricket", "Badminton", "Tennis"],
  displayFavGames() {
    return this.favGames.join("\n                    ");
  }
}
person.displayFavGames();

let displayData = (p) => {
  let {
    name,
    favGames,
    displayFavGames
  } = p;
  return `My name is ${name} and my cofavourite games are 
                    ${p.displayFavGames()}`;
}

console.log(displayData(person));

答案 1 :(得分:0)

displayFavGames是一个函数,虽然你可以解构它,你需要调用它,这似乎没有实现你想要的。相反,您可以显示所有的favGames值。

let displayData = ({
  name,
  favGames      
}) => {
  return `My name is ${name} and my cofavourite games is 
                    ${favGames.join(",")}`;
}    
console.log(displayData(person));