Знаете ли вы, что JSON.stringify() съедает это конкретное значение

Здравствуйте,
Сталкивались ли вы с ситуацией, когда при попытке преобразовать объект, содержащий функцию в качестве значения, в строку с помощью JSON.stringify(), вы замечали при печати результирующего значения, что ключ, содержащий значение функции, исчез вместе с ключом?

Это потому, что JSON.stringify() помечает его как нулевой. Он не может преобразовать значение функции в строку, поэтому сохраняет его нулевым. Теперь весь ваш объект изменился. Вот пример, если вы не знаете, как включить его или преобразовать обратно в функцию.

const obj = {
  author: "Fahim Zada",
  love: "0's and 1's",
  eat: () => console.log("Red Apple")
}

console.log(JSON.stringify(obj)) 
//"{'author':'Fahim Zada','love':'0's and 1's'}"
//Let us try to fix it by converting that key to string
obj.eat = obj.eat.toString()
console.log(JSON.stringify(obj))
//"{'author':'Fahim Zada','love':'0's and 1's','eat':'() => console.log('Red Apple')'}"

//Converting back to js object 
const stringify = JSON.stringify(obj)
const convert = JSON.parse(stringify)
//Now you can access primitive values as normal
console.log(convert.author) 
//"Fahim Zada"
//For our function, we will do this with "new" keyword or without
//Invoking the function with ()
//Will return our function and now we can call it
const myFunc = new Function("return " + convert.eat)()
console.log(myFunc())
Вход в полноэкранный режим Выход из полноэкранного режима

Спасибо за прочтение.

Оцените статью
devanswers.ru
Добавить комментарий