我只是想创建一个包含来自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
的{{1}},例如我只会easeyPeasy.inputs
undefined
除此之外,我无法通过键索引在我的obj中选择值。它只能通过密钥串工作。
工作:
alert(easeyPeasy.inputs.length)
无效:
alert(easeyPeasy.inputs["easeIn_input"])
有谁知道我在这里缺少什么?提前致谢
答案 0 :(得分:4)
您似乎期望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")
);
}
答案 1 :(得分:0)
如果要循环对象的属性,还可以使用for-in
var obj = {
test1:"test1",
var1:10,
var2:20,
var3:30
}
for (var key in obj){
document.write(key + " : " + obj[key] + "<br/>");
}
&#13;
答案 2 :(得分:-1)
您已经创建了一个Javascript对象;它只存储可通过密钥访问的值。
要确定字符长度,首先需要将其转换为字符串表示形式:
var json = JSON.stringify(easeyPeasy)