Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 11.05.2015, 15:12
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

iNfantry,
скажем так, это не очень хорошо.

eval() нельзя использовать в strict mode.
И если у тебя есть однотипные функции, то можно запихнуть их в объект, это будет удобнее и в глобальное пространство имён мусорить не будешь.
var obj = {
  funcA: function() {},
  funcB: function() {},
  funcC: function() {},
};

//вызов
obj['funcA']();
//или так, если заранее знаешь имя
obj.funcA();
Ответить с цитированием
  #12 (permalink)  
Старый 11.05.2015, 16:55
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
И если у тебя есть однотипные функции, то можно запихнуть их в объект, это будет удобнее и в глобальное пространство имён мусорить не будешь.
Аха, но я бы лучше сделал так:
var functions = {
  A: function() {},
  B: function() {},
  C: function() {}
};

functions["A"]();
functions["B"]();


Цитата:
Это плохо?
Да, потому что грязный хак. Банально - как это код будет минифицироваться и оптимизироваться?
Ответить с цитированием
  #13 (permalink)  
Старый 11.05.2015, 17:00
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
eval() нельзя использовать в strict mode.
Почему? Вполне можно.
"use strict";

console.log(eval("1 + 1"));


Другое дело, что единственный кейс, где он должен применяться - это выполнение произвольного кода.
Ответить с цитированием
  #14 (permalink)  
Старый 11.05.2015, 17:10
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

Сообщение от drDocument Посмотреть сообщение
то есть, первый вариант можно использовать если не знаешь имени?
Да. В первом варианте показан пример обращения к свойству-функции через литерал строки. Ясно-понятно, что её можно динамически генерировать.
Ответить с цитированием
  #15 (permalink)  
Старый 11.05.2015, 17:13
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

Erolast,
Цитата:
Аха, но я бы лучше сделал так:
Согласен. Я просто показал ТС пример для его варианта.

Цитата:
Почему? Вполне можно.
Сорян братух, попутал берега ;(
Ответить с цитированием
  #16 (permalink)  
Старый 11.05.2015, 20:07
Кандидат Javascript-наук
Отправить личное сообщение для iNfantry Посмотреть профиль Найти все сообщения от iNfantry
 
Регистрация: 29.10.2011
Сообщений: 132

Да, про евал я понял, он мне и самому не нравится, а насчет списка функций да, согласен, что лучше какой-то промежуточный контейнер с этими функциями вместо глобального window. Именно этот вариант я и выбираю, всем спасибо)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обратиться к элементу по ID через переменную? pashin76 jQuery 2 07.03.2014 19:51
Запретить вызов функции noak96 Общие вопросы Javascript 2 04.02.2014 20:10
Вызов функции TicTac Общие вопросы Javascript 2 24.01.2011 23:35
Вызов функции, находящейся в другой функции ZneP Events/DOM/Window 6 24.08.2010 18:45
вызов функции, из JS генерируемого на сервере subaru AJAX и COMET 1 12.07.2008 13:44