Как получить доступ к «свойствам» в Google Polymer 2?

В Polymer 1.0 я могу объявить свойства с помощью:

properties: {
    salary: {
        type: Number,
        value: 80
    }
}

Теперь в Polymer 2.0 (создание класса) я должен написать такой метод:

static get properties() {
    return {
        salary: {
            type: Number,
            value: 80
        }
    }
}

Но теперь this.properties это null. Как получить доступ к полю properties (а не к значениям properties)?


person Andrea    schedule 10.04.2017    source источник


Ответы (1)


this.properties пытается получить доступ к полю экземпляра (за исключением статических полей). Поскольку properties является полем static, вам придется использовать либо this.constructor.properties, либо XFoo.properties.

Пример:

class XFoo extends Polymer.Element {
  static get properties() { ... }

  constructor() {
    super();

    // this.constructor === XFoo
    console.log('this.constructor.properties', this.constructor.properties);
    console.log('XFoo.properties', XFoo.properties);
  }
}

codepen

person tony19    schedule 12.04.2017
comment
Отлично! Очевидно, я понимаю разницу между статическими полями и полями экземпляра: моя проблема заключалась в том, чтобы получить доступ к свойствам в поведении (в новом подходе с примесями классов), где я не могу знать имя (производного) класса. Чтобы было ясно, ссылаясь на ваш пример, я не могу использовать ваш второй подход, но первый идеален! Большое спасибо! :-) - person Andrea; 12.04.2017