我只是试图从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'
})
}
例如,如果我知道尝试返回length
的easeyPeasy.inputs
,我只会得到undefined
alert(easeyPeasy.inputs.length)
此外,我无法通过键索引选择obj中的值。它仅通过密钥字符串起作用。
正在工作:
alert(easeyPeasy.inputs["easeIn_input"])
不工作:
alert(easeyPeasy.inputs[0])
有人知道我在这里想念的吗?在此先感谢
您似乎期望JavaScript对象的行为类似于PHP数组。他们没有。
数组具有名称为数字的属性和一个长度属性,该属性等于最高数值属性的名称加一。
对象只是具有命名属性。
您可以使用Object.keys()
在对象中生成属性名称数组。
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")
);
}
for-in
您已经创建了一个Javascript对象;它只存储可通过键访问的值。
要确定字符长度,您需要先将其转换为字符串表示形式:
var obj = {
test1:"test1",
var1:10,
var2:20,
var3:30
}
for (var key in obj){
document.write(key + " : " + obj[key] + "<br/>");
}