es6-class. Объявление метода через new

233
26 сентября 2017, 08:48

Новый синтаксис классов позволяет объявлять методы через 'new'?

Например вместо

function Foo(param) {
    return function () {
        ...
    };
}
class Bar {
    ...
}
Bar.prototype.baz = new Foo;

что-нибудь вроде

class Bar {
    baz = new Foo;
}
Answer 1

Согласно спецификации ES6, тело класса может содержать только набор методов.

Иными словами, спецификация не позволяет вам определять свойства экземпляров, через конструкцию class.

Я вижу два выхода из ситуации:

  1. Использовать прототип в явном виде

    class Bar {
        // ...
    }
    Bar.prototype.baz = Foo('baz');
  2. Привязывать метод baz к каждому экземпляру Bar через конструктор:

    function Foo(param) {
        return function () {
            // ...
        };
    }
    // Будем использовать один экземпляр функции для всех Bar,
    // чтобы сэкономить немного памяти.
    var fooInstance = Foo('baz');
    class Bar {
        constructor() {
            this.baz = fooInstance;
        }
    }
Answer 2

Ответ на твой вопрос ДА! Сущности классов можно объявлять через new Судя по твоему коду ты используешь прототипное наследование, в es6 это можно сделать через наследование

class Foo {} class Bar extends Foo {} и ты сможешь использовать все методы класса Foo.

READ ALSO
hasAttribute -VS- getAttribute

hasAttribute -VS- getAttribute

Тут есть решённая задача - http://plnkrco/edit/FaKoF0M4QQB1OSdtpClb?p=preview

303
Зачем для application/x-www-form-urlencoded заменять “%20” на “+”?

Зачем для application/x-www-form-urlencoded заменять “%20” на “+”?

Для application/x-www-form-urlencoded пробелы должны быть заменены на "+", поэтому вам может понадобиться encodeURIComponent с дополнительной заменой "%20" на "+"

253
Длина элемента с классом hidden

Длина элемента с классом hidden

Столкнулся с непониманием того, какая высота у элементов с dislpay: none;

250