Недавно у меня появилась привычка вызывать такие вещи, как RegExp, String, Number, Object, TypeError и т.д. без "новых".
например:
throw (TypeError("Error"));
var regex = RegExp('^word$');
Я знаю, что это плохо для случаев, когда нужен контекст "this", так как без "нового", "this" может привести к хаосу в вашей глобальной области действия, если вы не закроете свой код в "use strict", и в этом случае он поднимает ошибка, которую вы пытаетесь изменить "undefined". (Я не уверен, что это работает в очень старых браузерах).
например:
var constructor = function() {
// 'use strict'; /* uncomment this line to avoid the behavior and be warned */
this.state = 'working as intended';
};
var foo = constructor();
console.log(foo.state); // undefined
console.log(window.state); // we just polluted our global scope.
тогда как
var constructor = function() {
this.state = 'working as intended';
};
var foo = new constructor;
console.log(foo.state); // "working as intended"
console.log(window.state); // we are clean.
Но в таких случаях, как выше, это нормально делать, или есть проблемы, которые я настраиваю, если у меня есть привычка делать это?
Спасибо заранее.