JavaScript: создайте функцию фабрики, которая возвращает объект с методами, которые имеют определенные свойства - PullRequest
0 голосов
/ 02 июня 2019

У меня есть фабричная функция, которая возвращает объект.Внутри объекта у меня есть метод с именем getNext.

Я хочу, чтобы метод getNext возвращал объект со свойствами value и done.

Ниже приведен мой код, но кажется, что то, что у меня есть в квадратных скобках, неверно.

function makeIterator (arr){

  let methodCalls = 0; 

    return {
      getNext(obj){
        methodCalls += 1; 

        return {
          this.value = ''; 
          this.done = ''; 
        }
      },

      getIndex(){
        return methodCalls
      }
    }
  }

Мой код выше не проходит тестовую спецификацию ниже:

it('the `getNext` method returns an object with the properties `value` and `done`', () => {
    const iterator = makeIterator(['first', 'second', 'third']);
    const iterableInfo = iterator.getNext();

expect(Object.keys(iterableInfo).sort()).toEqual(['done', 'value'].sort());
    expect(iterableInfo.hasOwnProperty('value')).toBe(true);
    expect(iterableInfo.hasOwnProperty('done')).toBe(true);
  });

Что я делаю не так?

1 Ответ

0 голосов
/ 02 июня 2019

Кажется, что вы пытаетесь использовать destructuring assignment.

Вот пример того, как это будет выглядеть:

var a, b, rest;
[a, b] = [10, 20];

Больше информации здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

...