Метод объекта вызывается для объекта, когда он хранится в переменной, но не когда объекты хранятся в массиве

Проанализируйте проблему

Если вы «должны» использовать регулярное выражение, пропустите проблему, проанализировав принятые перестановки.

«диапазон от -2055 до 2055» может быть выраженный как:

  • необязательный -
  • необязательные начальные нули
  • , за которым следует число от 0 до 2055

«Число от 0 до 2055» может быть одним из конечного числа конкретных перестановок:

  • одна цифра (0-9)
  • две цифры (10- 99)
  • три цифры (100-999)
  • четыре цифры, начинающиеся с 1 (1000-1999)
  • четырехзначных цифр, начиная с 20 (2000-204 * 9)
  • четыре цифры, начинающиеся с 205 (2050-2055 *)

Обратите внимание, что для этого регулярного выражения нет необходимости различать диапазон " 0-9 "и" 1-9 ", и только последние два диапазона имеют какие-либо ограничения на диапазон принятых цифр / символов (обозначенных звездочкой).

Записывать выражения регулярных выражений

. Каждая из вышеуказанных составных частей легко индивидуально выразить как регулярное выражение:

  • -?
  • 0 * [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] 1 [0-9] [0-9] [0-9 ] 20 [0-4] [0-9] 205 [0-5]

Поместите выражения вместе

. Соответствующим выражением для всего совпадения будет:

-?0*([0-9]|[0-9][0-9]|[0-9][0-9][0-9]|1[0-9][0-9][0-9]|20[0-4][0-9]|205[0-5])

Или немного более сжато:

-?0*([0-9]{1,3}|1[0-9]{3}|20[0-4][0-9]|205[0-5])

Предполагая , вход содержит только «число» и ничего больше, поэтому последнее регулярное выражение :

^-?0*([0-9]{1,3}|1[0-9]{3}|20[0-4][0-9]|205[0-5])$

Если необходимо разрешить знак ведущего плюса, это становится:

^[-+]?0*([0-9]{1,3}|1[0-9]{3}|20[0-4][0-9]|205[0-5])$

Вот сценарий js , демонстрирующий, что проходит и что не удастся последнему регулярному выражению.

0
задан Kamil Kiełczewski 5 March 2019 в 10:31
поделиться

2 ответа

Это работает нормально для меня

    function Timeline(params){ ... }

    Timeline.prototype.zoomMax = function() { ... } 

    var timeline = []
    timeline[0] = new Timeline(param1);
    timeline[1] = new Timeline(param2);

    timeline[0].zoomMax(); // Executes zoomMax function

Ваша первоначальная ошибка могла быть связана с неправильным объявлением метода zoomMax. Более подробная информация об этом здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Not_a_function

0
ответ дан freakomonk 5 March 2019 в 10:31
поделиться

Используйте ключевое слово class, чтобы определить класс объекта

class Timeline 
{
    constructor(parameters) {
        //property definitions, initialization...
    }

    zoomMax() {
        console.log('zoom');
    }
}


var timeline = [];
timeline[0] = new Timeline('parameters values');
timeline[1] = new Timeline('parameters values');

timeline[0].zoomMax();

0
ответ дан Kamil Kiełczewski 5 March 2019 в 10:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: