Можете ли вы использовать сокращенное присвоение свойств, используя «this»? - PullRequest
0 голосов
/ 14 ноября 2018

Я могу сделать это:

class Temp {
    constructor() {
        this.foo = 'foo'
        this.bar = 'bar'
    }

    getObj() {

        let boo = 'boo'
        return {
            boo
        }
    }
}
console.log(new Temp().getObj())
//prints { boo: 'boo' }

Так, как я могу сделать это:

class Temp {
    constructor() {
        this.foo = 'foo'
        this.bar = 'bar'
    }

    getObj() {

        return {
            this.foo
        }
    }
}
console.log(new Temp().getObj())

Существует ли специальный синтаксис или он не поддерживается?

Ответы [ 4 ]

0 голосов
/ 14 ноября 2018

Нет, это еще не поддерживается.Вам нужно будет перейти к {foo: this.foo}.

Однако есть предложение этапа 1 для улучшений определения стенографических свойств, которые позволили бы вам написать {this.foo} как литерал объекта.

0 голосов
/ 14 ноября 2018

Если 'foo' является публичной собственностью, вы можете сделать что-то вроде этого:

class Foo {
  constructor() {
    this.foo = 'foo';
  }
}

const { foo } = (new Foo());
console.log(foo); // 'foo'

https://repl.it/repls/FastForcefulMice

0 голосов
/ 14 ноября 2018

Я думаю, что вы на самом деле ищете:

return { ...this };

или если вы хотите опустить некоторые свойства:

 const { bar, ...take } = this;
 return take;
0 голосов
/ 14 ноября 2018

Если вы хотите использовать деструктуризацию, вам нужно извлечь свойство в const, а затем использовать сокращенные имена свойств:

class Temp {
  constructor() {
    this.foo = 'foo'
    this.bar = 'bar'
  }

  getObj() {
    const { foo } = this;

    return {
      foo
    }
  }
}
console.log(new Temp().getObj())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...