我可以有一个没有值的 JavaScript 对象键吗?
Can I have a JavaScript object key without a value
我想将类似TaskPaper的任务存储在JavaScript对象中。假设我有一个这样的任务
- Post to StackOverflow @priority(2) @due(2016-05-03) @flagged
这将变成
{"name":"Post to StackOverflow", "priority": 2, "due":"2016-05-03", "flagged":"value"}
标记不需要值,我能想到的就是使用true
或null
我想稍后使用if key in object
过滤任务,并且具有真/假值不适用于我的工作流程。
SO 社区会推荐哪些最佳实践。
如果你做类似 if (myobj.flagged)
的操作,那么如果你的 flagged
值是 true
,则测试通过。如果flagged
属性不存在,那么你会得到undefined
这是假的。所以它适用于flagged:true
,flagged:false
甚至没有flagged
属性。所以使用 true
,并在不应该存在时完全省略该属性(因此在这种情况下for...in
可以工作)。
JSON 规范不允许你在没有一些值的对象中创建键,并且没有"undefined"的定义(你可以在这里看到关键字是 null
、 true
和 false
)。如果您正在寻找一个简单的标志值,那么您的替代方法可能是:
if(object.key) // this would mean that the object has "key" and it is set
// to a truthy value.
您的其他选择可能是:
if(key in object && object[key]) // Verifies key exists and has truthy value
现在,话虽如此,在 JavaScript 中,你可以更有表现力。例如:
> var k;
undefined
> var o = {k:k}
undefined
> o
Object {k: undefined}
> console.log('k' in o)
true
相关文章:
- 面向对象JavaScript中的私有函数
- 对象 Javascript 中的标签无效 - 想要添加事件列表器
- 将字符串转换为对象 javascript/jquery
- 正在检查对象javascript中是否存在嵌套属性
- 时间-日期对象JavaScript getUTCMilliseconds
- 仅在对象(javascript)中解析值
- 使用对象(JavaScript或jQuery)填充选择下拉列表
- 引用另一个对象javascript中的对象
- 如何删除列表中的对象?Javascript nodejs和下划线
- 无法从日期对象javascript获取日期和月份
- 如何在if语句中使用对象-Javascript
- 对象javascript错误
- 对象Javascript的少数实例
- 位置对象Javascript
- 将字符串传递到对象javascript中
- 获取对象Javascript或jQuery的最后一个值
- 鼠标接近对象Javascript
- 这个mixins代码是书中的错误吗;面向对象JavaScript的原理”;
- 使用闭包编译器编写更好的面向对象JavaScript完整示例代码
- 访问对象javascript数组中的对象属性值