Методы объекта, назначенные переменным или аргументам функций, не выполняются при вызове
Я изучаю 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: Если вы сейчас стесняете зубы и приглушаете что-то о плохой практике, облажайтесь с хорошей практикой, яЯ просто играю. Но я'Я тоже хотел бы услышать о них.