yarkov
@yarkov
Помог ответ? Отметь решением.

Можно ли обнулить свойства объекта в соответствии с их типом?

Есть объект:
self.exportInfo = {
	// Формат файла экспорта (JSON или CSV)
	format: "json",
	// URL на загрузку файла экспорта
	url: "/export/json",
	// Размер файла экспорта в байтах
	size: 0,
	// Имя файла экспорта
	filename: "export.json"
};

После выполнения загрузки нужно обнулять свойства к пустым, но в соответствии с их типом, то есть self.exportInfo.url нужно обнулить к "", а не к 0 или [].
Можно конечно какой-то метод reset() написать, но а что если я добавлю свойства позже? Есть способ, или я хочу невозможного?
  • Вопрос задан
  • 844 просмотра
Решения вопроса 1
Что-то подобное можно сделать
function reset(obj) {
  var defaults = {
     '[object Object]': {},
     '[object Array]': [],
     '[object String]': '',
     '[object Boolean]': false,
     '[object Number]': 0,
     '[object Function]': function() {}
  };
  
  for (var key in obj){
    if (obj.hasOwnProperty(key)) {
         obj[key] = defaults[Object.prototype.toString.call(obj[key])];
    }
	}
}

var exportInfo = {
  format: "json",
  url: "/export/json",
  size: 0,
  items: [1,2,3],
  fn: function(x) { return x;},
  filename: "export.json"
};

reset(exportInfo);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы