Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

toJSON属性有特殊含义?

  JavaScript的对象从Object构造器的原型上就继承了toString、toLocaleString和valueOf这两个用于类型转换的函数,这是确实存在于Object构造器的原型对象上的。但是toJSON也是个类似的东西,却不存在与Object原型对象上,只有Date对象自带实现。
"toLocaleString" in Object.prototype; //true
"toString" in Object.prototype; //true
"valueOf" in Object.prototype; //true
"toJSON" in Object.prototype; //false
"toJSON" in Date.prototype; //true
  但是,这个属性确实可以被使用。比如 <script>
var o={toJSON:function(){
  return "次碳酸钴";
}};
alert(JSON.stringify(o));
</script>
  或者更极端点的测试 <script>
var o=[new Number,new Number,new Number];
Number.prototype.toJSON=function(){
  return "次碳酸钴";
};
alert(JSON.stringify(o));
</script>
  在调用JSON.stringify的时候,如果对象存在toJSON方法就会优先使用它,而不是传统意义上的[[PrimitiveValue]]取值。
  这个性质被定义在JSON.stringify中(ES5-15.12.3)。在内置对象中只有Date对象自带了(ES5-15.9.5.44)。
网名:
3.80.55.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^