今天写项目的时候一直报错JSON.stringify() not a function,改为window.JSON.stringify()就好了。
这是为啥
作用域的问题,你使用 JSON 方法的地方,所在的类里应该也包含一个 JSON 对象,所以需要指定使用哪个作用域的
可能 和 this指向有关
不知道你这个问题是否已经解决, 如果还没有解决的话:JSON.stringify 方法是将一个 JavaScript 对象或值转换为 JSON 字符串,默认该方法其实有三个参数:第一个参数是必选,后面两个是可选参数非必选。第一个参数传入的是要转换的对象;第二个是一个 replacer 函数,比如指定的 replacer 是数组,则可选择性地仅处理包含数组指定的属性;第三个参数用来控制结果字符串里面的间距,后面两个参数整体用得比较少。
该方法的语法为:JSON.stringify(value[, replacer [, space]])
下面我们通过一段代码来看看后面几个参数的妙用,如下所示。
JSON.stringify({ x: 1, y: 2 });
// "{"x":1,"y":2}"
JSON.stringify({ x: [10, undefined, function(){}, Symbol('')] })
// "{"x":[10,null,null,null]}"
/* 第二个参数的例子 */
function replacer(key, value) {
if (typeof value === "string") {
return undefined;
}
return value;
}
var foo = {foundation: "Mozilla", model: "box", week: 4, transport: "car", month: 7};
var jsonString = JSON.stringify(foo, replacer);
console.log(jsonString);
// "{"week":4,"month":7}"
/* 第三个参数的例子 */
JSON.stringify({ a: 2 }, null, " ");
/* "{
"a": 2
}"*/
JSON.stringify({ a: 2 }, null, "");
// "{"a":2}"
从上面的代码中可以看到,增加第二个参数 replacer 带来的变化:通过替换方法把对象中的属性为字符串的过滤掉,在 stringify 之后返回的仅为数字的属性变成字符串之后的结果;当第三个参数传入的是多个空格的时候,则会增加结果字符串里面的间距数量,从最后一段代码中可以看到结果。
如果本篇内容对您有帮助,帮忙点击此链接,让小编加个鸡腿哟!
github.crmeb.net/u/xingfu