Методы объекта, назначенные переменным или аргументам функций, не выполняются при вызове

Я изучаю javascript прямо сейчас, мне кажется, это красивый функциональный язык, это замечательный шаг от PHP, я должен был сделать это раньше. Хотя я не могу понять это:

var v1 = (/[abc]/).test;
v1('a');

говоритtest method called on incompatible undefinedЯЯ пытаюсь сохранить метод тестирования этого регулярного выражения в переменной и вызвать его позже.

но это работает с моими собственными функциями:

function foo(){
    return 'I\'m foo';
}

var f = foo;
f(); // returns I'm foo

Он должен работать и с методами, так как функции в любом случае являются просто методами родительского объекта, верно?

В конечном счете, причина, по которой яЯ пытаюсь это, чтобы иметь возможность написать что-то вроде этого:

var a = ['a', 'b', 'c'];
a.every( (/[abc]/).test );

проверить каждый член массива с этим регулярным выражением.

Почему нетэто работа? Это ограничение в передаче встроенных функций вокруг? Или я просто что-то не так делаю?

PS: Если вы сейчас стесняете зубы и приглушаете что-то о плохой практике, облажайтесь с хорошей практикой, яЯ просто играю. Но я'Я тоже хотел бы услышать о них.

Ответы на вопрос(5)

Ваш ответ на вопрос