繁体   English   中英

为什么我的 json 格式的 OBJ 没有长度

[英]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.inputslength ,例如我只会得到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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM