Неизвестная конструкция объект/json f({“a”:“b”})

376
02 сентября 2017, 00:56

Пришлось разбираться в чужом javascript коде. Наткнулся на такого типа конструкцию Имеет вид

    name_construction({ 
    "param": "content" 
    })

Это похоже и на JSON и на объект. Но как получить доступ к содержимому не знаю.

Ответ от команды name_construction.length = 1

А что-то типа name_construction.param или name_construction["param"] не работает

Answer 1

Это просто вызов функции с передачей в нее обьекта, а length функции возвращает количество ожидаемых параметров.

name_construction["param"] не работает - не работает потому-что нету у функции свойства param

Пример :

function a1(b) {}; 
 
function a2(b, c) {}; 
 
function a3(b, c, d) {}; 
 
console.log(a1.length); 
console.log(a2.length); 
console.log(a3.length);

Читать ТУТ

А про обьекты "похожие" на json, скажу просто, js-обьекты впринципе очень похожи на json, а свойства обьявлять можно как в кавычках так и без них, как и обращаться к ним :

var a = { 
  "param": "content A" 
}; 
 
var b = { 
  param: "content B" 
}; 
 
console.log('b["param"] = ', b["param"]); 
console.log('b.param = ', b.param); 
 
console.log('a["param"] = ', a["param"]); 
console.log('a.param = ', a.param);

Читать например ТУТ

Answer 2

Это просто параметры, которые передаются функции в виде объекта...

Внутри функции используются так:

function f(data){ console.log(data.a) }

А вызываются так: f({a:10})

Их никак не получить снаружи, если в функции они не присваиваются глобальной переменной и не возвращаются...

Варианты решения:

Первый вариант - возвращение значения

function f(data){
    //Код функции
    return data;
}
//Получение данных:
f({a:123}).data // {a:123}

Прокатит только, если в функции нет return

Второй вариант - присваивание глобальной переменной (если первый реализовать не получается)

var tempdata;
function f(data){
    tempdata = data;
    //Код функции
}

Теперь данные можно получить из переменной tempdata