ДО: вікно - це посилання на глобальний об'єкт у JavaScript браузера. Що також є this
, і повинно працювати навіть у не браузерних середовищах, таких як Node.js, розширення Chrome, переведений код тощо
var obj = new this[classNameString]();
Обмеження полягає в тому, що клас, який викликається, повинен знаходитись у глобальному контексті. Якщо ви хочете застосувати те саме до класу з обсягом, вам потрібно зробити:
var obj = (Function('return new ' + classNameString))()
Однак насправді немає причин використовувати рядок. Функції JavaScript самі по собі є об'єктами, як і рядки, які також є об'єктами.
Редагувати
Ось кращий спосіб отримати глобальну сферу, яка працює в суворому режимі, а також не-браузерні середовища JS:
var global;
try {
global = Function('return this')() || (42, eval)('this');
} catch(e) {
global = window;
}
var obj = new global[classNameString]
Від: Як отримати глобальний об’єкт у JavaScript?