2016-08-29 4 views
1

В чем разница между RegExp('hi') и new RegExp('hi')?JavaScript: `новый RegExp ('hi')` versus `RegExp ('hi')`?

Соответствует ли ключевое слово new?

+0

Конструктор должен использовать для таких ситуаций: 'RegExp ('привет' + someVariable)', где вы на самом деле построить (Дух!) Выражение. Если вы знаете это с самого начала, перейдите к '/ hi /'. – Seb

+0

'function MyObject (arg) {if (! (This instanceof MyObject)) возвращает новый MyObject (arg); } '- это обычный способ реализовать это самостоятельно. – 4castle

ответ

5

Это идентично

RegExp конструктор является %RegExp% Внутренним объектом и начальное значение RegExp свойства глобального объекта. Когда RegExp вызывается как функция, а не как конструктор, он создает и инициализирует новый объект RegExp. Таким образом, вызов функции RegExp(…) эквивалентен выражению создания объекта new RegExp(…) с теми же аргументами.

От http://www.ecma-international.org/ecma-262/6.0/#sec-regexp-constructor

+0

Я не могу не чувствовать, что это должна быть вики сообщества, так как в этом ответе есть довольно много оригинального контента. – 4castle

+0

@ 4castle Я лично не знаю критериев ответа, чтобы быть хорошим сообществом wiki. Я проверил http://meta.stackexchange.com/questions/11740/what-are-community-wiki-posts и не уверен, что быть «не очень оригинальным» является одним из них. – zerkms