Javascript JSON.stringify()对对象中的函数有什么作用?
假设Javascript对象有一个函数:Javascript JSON.stringify()对对象中的函数有什么作用?,javascript,json,object,Javascript,Json,Object,假设Javascript对象有一个函数: function Foo() { this.a = 32; this.bar = function (){ alert("Hello World!"); } } JSON.stringify()如何处理bar函数?它只是被忽略了吗?这是标准做法吗?JSON转换和不转换为JSON字符串的是什么 Rem:我不知道为什么人们对我的问题投了反对票,很明显,人们不应该用函数字符串化对象。我只是想了解默认行为。如果传递到数组
function Foo() {
this.a = 32;
this.bar = function (){
alert("Hello World!");
}
}
JSON.stringify()
如何处理bar
函数?它只是被忽略了吗?这是标准做法吗?JSON转换和不转换为JSON字符串的是什么
Rem:我不知道为什么人们对我的问题投了反对票,很明显,人们不应该用函数字符串化对象。我只是想了解默认行为。如果传递到数组中,只需更改传递到null的函数,如果在对象中,则根本不包含属性。它不尝试复制函数,即使是字符串形式
例如,请参见以下内容:
JSON.stringify([function () {}]); // "[null]"
JSON.stringify({ x: function () {} }); // "{}"
如果试图对函数本身进行字符串化,则该函数不是有效的JSON值,这意味着JSON.stringify
无法生成有效的JSON字符串:
JSON.stringify(function () {}); // undefined
这是ECMAScript规范的一部分,尽管它的实际措辞相当复杂。但是,其中包含一个注释,总结了以下内容:
附注5
没有JSON表示的值(例如
未定义的和函数)不会生成字符串。相反,它们生成未定义的值。在数组中,这些值表示为
字符串null
。在对象中,不可表示的值会导致
要从字符串化中排除的属性
JSON是一个ECMA标准-它对哪些数据类型的作用应该被很好地指定。它为函数返回未定义的。@MaxArt:JSON没有未定义的@MaxArt:console.log(JSON.stringify(function(){}));->未定义的
,JSON.stringify([function(){}]);->[null]
,但是,您可以通过提供自定义替换函数来字符串化函数。是的,对不起,我写评论时很匆忙:)