что означает синтаксис [] в машинописи - PullRequest
0 голосов
/ 03 июля 2018

Я хочу использовать приложение ионного образца для создания веб-приложения. Существует часть примера кода, написанного на машинописи. Я не могу понять значение кода это [f] = поля [f] Не могли бы вы объяснить, что означает этот код?

Полный код этого файла TS:

  /**
 * A generic model that our Master-Detail pages list, create, and delete.
 *
 * Change "Item" to the noun your app will use. For example, a "Contact," or 
 a
 * "Customer," or a "Animal," or something like that.
 *
 * The Items service manages creating instances of Item, so go ahead and 
rename
 * that something that fits your app as well.
 */
export class Item {

  constructor(fields: any) {
    // Quick and dirty extend/assign fields to this model
    for (const f in fields) {
      // @ts-ignore
      this[f] = fields[f];
    }
  }

 }

export interface Item {
  [prop: string]: any;
}

Ответы [ 3 ]

0 голосов
/ 03 июля 2018

Думайте об этом как об общем конструкторе. Он выполняет итерацию членов псевдонимов «полей» объекта в области действия функции и присваивает значения «this», то есть объекту, который создается. Например, если переданный объект был:

var fields= {mem1: 1, mem2: 'marios'};

the code would then

for (const f in fields) {
      this[f] = fields[f];
      // 1st iteration would be
      // this[mem1] =  fields[mem1]; -> this[mem1] will create the property to the new object
      // fields[mem1] will read the value, so it created the prop and copies the value 
    }
0 голосов
/ 03 июля 2018

Это обозначение в скобках для доступа к собственности. Вы можете узнать больше о MDN здесь

0 голосов
/ 03 июля 2018

Вы смотрите на динамический метод доступа к свойствам. Скажите "поля" было {first: 1, second: 2}, код будет эквивалентен:

this.first = fields.first this.second = fields.second

Короче говоря, он присваивает все перечисляемые свойства полей этому.

MDN веб-документы: Accessor

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...