freeCodeCamp/curriculum/challenges/chinese/02-javascript-algorithms-an.../es6/write-concise-declarative-f...

1.9 KiB

id challengeType forumTopicId title
587d7b8b367417b2b2512b50 1 301224 用 ES6 编写简洁的函数声明

Description

在 ES5 中,当我们需要在对象中定义一个函数的时候,我们必须如下面这般使用function关键字:
const person = {
  name: "Taylor",
  sayHello: function() {
    return `Hello! My name is ${this.name}.`;
  }
};

在 ES6 语法的对象中定义函数的时候,你可以完全删除function关键字和冒号。请看以下例子:

const person = {
  name: "Taylor",
  sayHello() {
    return `Hello! My name is ${this.name}.`;
  }
};

Instructions

使用以上这种简短的语法,重构在bicycle对象中的setGear函数。

Tests

tests:
  - text: 不应使用<code>function</code>关键字定义方法。
    testString: getUserInput => assert(!removeJSComments(code).match(/function/));
  - text: <code>setGear</code>应是一个函数。
    testString: assert(typeof bicycle.setGear === 'function' && code.match(/setGear\s*\(.+\)\s*\{/));
  - text: 执行<code>bicycle.setGear(48)</code>应可以让<code>gear</code>的值变为 48。
    testString: assert((new bicycle.setGear(48)).gear === 48);

Challenge Seed

// change code below this line
const bicycle = {
  gear: 2,
  setGear: function(newGear) {
    this.gear = newGear;
  }
};
// change code above this line
bicycle.setGear(3);
console.log(bicycle.gear);

After Test

const removeJSComments = str => str.replace(/\/\*[\s\S]*?\*\/|\/\/.*$/gm, '');

Solution

const bicycle = {
  gear: 2,
  setGear(newGear) {
    this.gear = newGear;
  }
};
bicycle.setGear(3);