Задать вопрос

JavaScript Обновление данных внутри, как реализовать?

К примеру, у нас есть функция, которая имеет дефолтные значения:
function test(value)
{
	var defaults = {
		check: 0,
		point: true
	}
}

Данная функция будет возвращать нам 2 значения, check и point. К примеру, мы хотим выполнить данную функцию, но в значениях мы укажем другие данные, test({check: 1, point: false});
Вопрос такой, как узнавать, указали ли мы то или инное значение и что на возвращать: defaults.check или value.check
  • Вопрос задан
  • 1107 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Deonisius
@Deonisius
Родился в 11110110111 году, 11000 января.
Я бы сделал более универсальный вариант, чем предложил Михаил Белошицкий :
function extend() {
    for (var i = 1; i < arguments.length; i++)
        for (var key in arguments[i])
            if (arguments[i].hasOwnProperty(key))
                arguments[0][key] = arguments[i][key];
    return arguments[0];
}

function test(value) {
    var defaults = {
        check: 0,
        point: true
    };

    return extend(defaults, value);
}
console.log( test() ); //  Object { check=0,  point=true}
console.log( test({check: 555}) ); //  Object { check=555,  point=true}
console.log( test({check: 10, point: false}) ); //  Object { check=10,  point=false}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
kimono
@kimono
Web developer
А разве нельзя указать дефолтные значения в определении функции?
function test(defaults = {check: 0, point: true}){
  return defaults;
}
Ответ написан
mbeloshitsky
@mbeloshitsky
Вебдев, систем оперейшонс, ж.д. автоматика
Во-первых ваша функция не будет ничего возвращать, для этого надо использовать return
function test(value)
{
  var defaults = {
    check: 0,
    point: true
  }
  return defaults;
}

Во-вторых, что касается дефолтных параметров, обычно пишут как-то так
function test(value)
{
  var defaults = {
    check: 0,
    point: true
  }
  if (value.check !== undefined)
    defaults.check = value.check;
  if (value.point!== undefined)
    defaults.point = value.point;
  return defaults;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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