我试图使用下面的代码找到report_data(对象)键的长度..但由于某些原因它产生值3.
a={report_freq: "daily", report_item_num: 2, report_num: 39, report_data: "{}"} Object {report_freq: "daily", report_item_num: 2, report_num: 39, report_data: "{}"} Object.getOwnPropertyNames(a.report_data).length 3
为了更清晰,我有了图像.
a.report_data
是一个包含三个属性的字符串:
0
,代表第一个字符("{"
).
1
,代表第二个字符("}"
).
并且length
,表示字符串(2
)的长度.
这是一个有点反直觉的,如果你来自其他语言,这0
和1
是属性,但在Javascript数组的元素属性,就像所有其他属性,而"常规"属性可以使用数组语法(又名"访问括号标记 ") :
// "array elements" a.report_data[0] === "{"; a.report_data[1] === "}"; // or... a.report_data["0"] === "{"; a.report_data["1"] === "}"; // "normal" properties a.report_data.length === 2; // or... a.report_data["length"] === 2;
这些都是属性名称,因此,当您为字符串要求一组属性名称时,您会得到:
["0", "1", "length"]