replacer自变量函数如何从对象值中提取键和值并将其映射到JSON.Stringify(value,replacer,space)方法中的键和值自变量。
我了解到对象的键成为替换功能的键参数,值成为该功能的值参数。
let user={name:"anup", age:22};
JSON.stringify(user,function(key,value){
if(typeof value==="string"){
return undefined;
}
return value;
},null);
在这里,名称成为替换函数的键,而“ anup”成为替换函数的值,这很好,但是我的问题是这种映射是如何发生的? 通常,我们通过在该方法调用中传递参数来调用任何方法,例如
function a(c,d){
// logic
}
a(2,3);
但是在stringify方法中,我们没有将任何此类东西传递给replacer函数或回调函数,而是如何将其映射?
实际上,我是javaScript世界中的新手,所以我无法理解。如果您在这方面指导我,我将非常感谢您。
答案 0 :(得分:0)
JSON.stringify()如何在内部工作?
那可能是一些底层的,高度优化的本机代码。但是,让我们假设它只是一个常规的Ja aScript函数,这使事情变得简单。该函数将这样定义:
JSON.stringify = function(toStringify, replacer) {
现在,该函数必须确定首先使用toStringify
,例如:
if(typeof toStringify === "object") {
在这种情况下,代码必须遍历所有对象的键/值对:
for(let key in toStringify) {
let value = toStringify[key];
现在代码可以用这些对调用替换器了:
value = replacer(key, value);
然后可以将字符串构建为:
result += `"${key}": ${JSON.stringify(value)}`;
然后返回结果。