Создание экземпляров объекта Javascript аналогично php new $ className (); - PullRequest
1 голос
/ 01 октября 2011

Я пытаюсь сделать эквивалент этого, но в JS.

$className = 'MyClass';
$obj = new $className();

Я пробовал очевидные вещи, но безуспешно, сейчас прибегаю к использованию eval, как показано ниже: /

eval('var model = ' + modelName + '();');

Спасибо!

Ответы [ 2 ]

5 голосов
/ 01 октября 2011

Для глобальных «классов» используйте:

var classname = "Date";
var obj = new window[classname]();

window - глобальное пространство имен.Переменные и методы, определенные непосредственно в <script> без оболочки, автоматически сохраняются в глобальном пространстве имен.

Для методов других «пространств имен» используйте:

var classname = "round";
var obj = new Math[funcname]();
// Illustrative purposes only, Math doesn't need `new`

Для частных методов, которыене привязаны к пространству имен, нет решения, кроме eval или Function:

var classname = "nonglobal";
var obj = new (Function(classname))();

Вам следует избегать eval, когда это возможно, особенно если вы работаете с неизвестными строками.

1 голос
/ 01 октября 2011

См. Этот вопрос для хорошего ответа: Создание динамического объекта

Но в основном вы хотите return new window[modelName];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...