Это является немного трудоемким, но это делает задание:
Щелчок правой кнопкой любой файл в Проводнике Решения и выборе 'Не откладывает Незаконченные Изменения...' из контекстного меню.
Двойной щелчок соответствующий shelveset в Неотложить диалоговом окне.
Двойной щелчок файл, который Вы хотите сравнить. Это откроет sheleveset версию файла в блокноте.
Сохранили файл где-нибудь на Вашей локальной машине.
Близкий все диалоговые окна.
Щелчок правой кнопкой локальная версия рабочей области Вашего файла в Проводнике Решения и выборе 'Выдерживает сравнение' из контекстного меню.
Изменение путь назначения к тому из файла, который Вы сохранили ранее и нажимаете "OK".
Зависит от того, где вызываемая функция определена (глобальная или локальная).
Если глобальная, вам не нужен eval
(и безопаснее избегать этого), вы просто ссылаетесь на функцию через глобальное окно
объект:
var args = [];
for(var p in json.callback.callbackParams) {
args.push(json.callback.callbackParams[p]);
}
window[json.callback.callbackName].apply(null, args)
См. Использованную выше функцию apply ()
.
Если она находится в локальной области видимости, вам понадобится eval
(как у вас это нормально).
Не используйте eval. Вы можете получить ссылку на именованную глобальную переменную или функцию из объекта window
:
var callbackfunction= window[json.callback.callbackName];
И пытаться сериализовать ваши значения в строку только для того, чтобы их ненадежно проанализировать обратно в JavaScript, глупо. Вызов функции явно:
callbackfunction.call(window, json.callback.callbackParams.param1, json.callback.callbackParams.param2);
( window
здесь фиктивное значение для this
, когда вы не используете методы объекта.)
Лучше автоматизировать его, чтобы принимать любые количество параметров должно превратить callbackParams в простой массив:
callbackParams: [1, 2]
, а затем использовать apply
для вызова функции:
callbackfunction.apply(window, json.callback.callbackParams);