[英]How it comes that my json formatted OBJ doesn't have a length
我只是想从 After Effects ScriptUI API 创建一个包含多个控件的对象。
这是我的 obj 的样子:
var easeyPeasy = {};
// groups
easeyPeasy.groups = {
"easeIn_grp": ease__Panel.add('group', undefined, {
name: 'easeIn group'
}),
"easyEase_grp": ease__Panel.add('group', undefined, {
name: 'easyEase group'
}),
"easeOut_grp": ease__Panel.add('group', undefined, {
name: 'easeOut group'
})
};
// labels
easeyPeasy.label = {
"easeIn_label": easeyPeasy.groups["easeIn_grp"].add('statictext', undefined, 'ease in:', {
name: 'easeIn_label'
}),
"easyEase_label": easeyPeasy.groups["easyEase_grp"].add('statictext', undefined, 'easy ease: ', {
name: 'easyEase_label'
}),
"easeOut_label": easeyPeasy.groups["easeOut_grp"].add('statictext', undefined, 'ease out:', {
name: 'easeOut_label'
})
};
// slider
easeyPeasy.slider = {
"easeIn_slider": easeyPeasy.groups["easeIn_grp"].add('slider', undefined, 50, 0, 100, {
name: 'easeIn_slider'
}),
"easyEase_slider": easeyPeasy.groups["easyEase_grp"].add('slider', undefined, 50, 0, 100, {
name: 'easyEase_slider'
}),
"easeOut_slider": easeyPeasy.groups["easeOut_grp"].add('slider', undefined, 50, 0, 100, {
name: 'easeOut_slider'
})
}
// inputs
easeyPeasy.inputs = {
"easeIn_input": easeyPeasy.groups["easeIn_grp"].add('edittext', undefined, 50, {
name: 'easeIn_input'
}),
"easyEase_input": easeyPeasy.groups["easyEase_grp"].add('edittext', undefined, 50, {
name: 'easyEase_input'
}),
"easeOut_input": easeyPeasy.groups["easeOut_grp"].add('edittext', undefined, 50, {
name: 'easeOut_input'
})
}
如果我知道尝试返回我的easeyPeasy.inputs
的length
,例如我只会得到undefined
alert(easeyPeasy.inputs.length)
除此之外,我无法通过键索引选择 obj 中的值。 它只能通过密钥字符串工作。
在职的:
alert(easeyPeasy.inputs["easeIn_input"])
不工作:
alert(easeyPeasy.inputs[0])
有谁知道我在这里想念什么? 提前致谢
您似乎希望 JavaScript 对象的行为类似于 PHP 数组。 他们没有。
数组具有名称为数字的属性和一个长度属性,该属性等于最高数字属性的名称加一。
对象只有命名属性。
您可以使用Object.keys()
在对象中生成一组属性名称。
var data = { foo: "foo_val", bar: "bar_val" }; var props = Object.keys(data); for (var i = 0; i < props.length; i++) { document.body.appendChild( document.createTextNode( data[props[i]] ) ) document.body.appendChild( document.createElement("br") ); }
您已经创建了一个 Javascript 对象; 它只存储可通过键访问的值。
要确定以字符为单位的长度,您需要先将其转换为字符串表示形式:
var json = JSON.stringify(easeyPeasy)
如果要遍历对象的属性,也可以使用for-in
var obj = { test1:"test1", var1:10, var2:20, var3:30 } for (var key in obj){ document.write(key + " : " + obj[key] + "<br/>"); }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.