对象.创建,JSON时不正确.对对象进行字符串化
Object.create, not correct when JSON.stringify the object
我尝试使用Object.create
从对象a
创建一个新对象b
var a ={};
var b = Object.create( a );
a.n = 1;
b.m = 2;
当我通过for .. in ..
迭代两个对象时,它显示正确的值。但JSON。Stringify不打印正确字符串。
JSON.stringify( b )
应该打印成{"n":1,"m":2}
。但它只打印{"m":2}
。有什么建议吗?
我已经在jsfiddle中添加了它。jsfiddle链接http://jsfiddle.net/V3Nxs/
这是因为n
是b
的原型属性,而JSON.stringify
只适用于那些对对象上的hasOwnProperty
返回true的属性。
我更新了你的小提琴
http://jsfiddle.net/V3Nxs/2/for( var k in b ){
if (!b.hasOwnProperty(k)) continue;
html.push( 'b.'+ k +':' + b[k] );
}
- 你需要使用hasOwnProperty我改变了第二个for循环的索引
如果你看一下Object。你传入的第一个参数是新对象的原型。这意味着在原型链中,b拥有a所拥有的一切。hasOwnProperty修复了这个问题,因为只有当被测试的属性在对象本身上,而不是在原型链的某个地方时,它才返回true。
未定义b.n
是预期的行为。想要得到你想要的,你可以试试这个。
var a = {};
var b = {a:a};
a.n = 1;
b.m = 2;
现在b.a.n
被设置为1
, JSON.stringify
将其包含在输出中
相关文章:
- 如何使用jquery读取对象字符串
- 用javascript修复这个JSON对象字符串最干净的方法是什么
- Javascript对象字符串值-在应该隐藏的时候呈现的HTML代码
- 在Nodejs中将数组转换为类似子的对象字符串
- 对象字符串转换为JSON(抛出错误)
- 如何将事件对象字符串化
- 如何在 JavaScript 中将 JSON 对象字符串化为负零
- 将 JSON 对象字符串数组转换为 JS 对象数组
- 如何在角度转换请求中将对象字符串转换为 JSON 对象
- 删除开头的双引号&结束于JSON对象/字符串或Java脚本变量
- 将json对象字符串转换为值
- 如何迭代json对象字符串
- 将数组列表转换为json对象字符串
- 如何将继承的对象字符串化为JSON
- 如何按对象字符串值之一对对象数组进行数字排序
- 解析日期对象字符串并获取以毫秒为单位的时间
- 如何在javascript中解析javascript对象字符串
- Javascript类对象字符串到对象
- 从使用.data()添加的对象字符串中获取值
- 如何在javascript中添加一个函数变量到对象字符串