我想为数据类型创建自己的toString
函数。
我们举一个例子:
JSON.stringify({}) // "{}"
我想要"test"
返回。所以,我试图修改对象原型:
Object.prototype.toString = function () { return "test"; }
然后:JSON.stringify({})
也会返回"{}"
。
我确信有一个函数可以重写以返回自定义值。
那是什么功能?
答案 0 :(得分:12)
function MyObj() {};
MyObj.prototype.toJSON = function(){return "test";}
JSON.stringify(new MyObj())
""test""
JSON在其字符串化的对象上查找toJSON
函数。但请注意,您不会从toJSON
返回一个字符串,而是返回一个字符串化的对象来代替您传入的对象。在这种情况下,我返回了一个字符串,这就是为什么返回值在它周围有额外的引号。
你也可以使用传递给stringify的翻译函数做同样的事情。
var x = {};
JSON.stringify(x, function(key, value){
if (value===x) {return "test";} else {return value;}
});
""test""
有关翻译功能的更多信息,请参阅Using native JSON。