如何检查javascript对象是否具有特定属性
How to check if a javascript object has a certain property
假设我有一个如下的javascript对象:
window.config
config.UI = {
"opacity": {
"_type": "float",
"_tag": "input",
"_value": "1",
"_aka": "opacity",
"_isShow":"1"
}
如何判断"不透明度"对象是否具有名为"_test"的属性?像
var c=config.ui.opacity;
for(var i in c)
{
//c[i]=="_test"?
}
我如何发现它是否也被分配了?
至少有三种方法可以做到这一点;你使用哪一个在很大程度上取决于你,有时甚至是风格问题,尽管有一些实质性的区别:
if..in
您可以使用if..in
:
if ("_test" in config.UI.opacity)
因为当在测试中使用时(与特殊的for..in
循环相反),in
测试对象或其原型(或其原型的原型等)是否具有该名称的属性。
hasOwnProperty
如果您想从原型中排除属性(在您的示例中这并不重要),可以使用hasOwnProperty
,这是所有对象从Object.prototype
:继承的函数
if (config.UI.opacity.hasOwnProperty("_test"))
只需检索并检查结果
最后,您可以检索属性(即使它不存在),并通过查看结果来决定如何处理结果;如果你向一个对象询问它没有的属性的值,你会得到undefined
:
var c = config.UI.opacity._test;
if (c) {
// It's there and has a value other than undefined, "", 0, false, or null
}
或
var c = config.UI.opacity._test;
if (typeof c !== "undefined") {
// It's there and has a value other than undefined
}
防御性
如果config.UI
可能根本没有opacity
属性,你可以让所有这些都更具防御性:
// The if..in version:
if (config.UI.opacity && "_test" in config.UI.opacity)
// The hasOwnProperty version
if (config.UI.opacity && config.UI.opacity.hasOwnProperty("_test"))
// The "just get it and then deal with the result" version:
var c = config.UI.opacity && config.UI.opacity._test;
if (c) { // Or if (typeof c !== "undefined") {
最后一个之所以有效,是因为与其他一些语言相比,&&
运算符在JavaScript中特别强大;它是CCD_ 12算子奇异强大的推论。
相关文章:
- 是否可以从父类访问子类的属性
- d3.js圆的半径是否可以由样式属性指定
- 检查对象的所有属性是否未定义
- 消隐数组元素是否生成自己的属性
- 是否可以使用CSS分配数据属性
- 检查来自不同数组的两个元素的一个属性是否相等
- 是否有任何内置方法可以更改JavaScript对象'的属性设置为某个值
- 正在检查对象javascript中是否存在嵌套属性
- 正在检查属性的属性是否存在
- html元素是否具有内置的属性
- jQuery检查CSS宽度是否大于0,然后添加CSS属性
- 是否可以在 HTML 标记中插入您的属性
- 在 Forerunner 数据库集合中创建主键时,key 属性是否可以位于集合对象的对象内部
- 在HTML5中是否可以有多个数据{名称}属性
- 变量/对象是否按值传递,为什么我不能在 javascript 中使用变量更改对象的属性
- 是否有脚本/代码可以一次将链接属性添加到多个链接
- 使用 Chai - 如何检查对象属性是否包含 DOM 元素
- Ember 1.0 预发行版支持属性是否已更改
- 是否可以在 Polymer 中的
节点上使用自定义属性以获得漂亮的 API - HTML 中是否存在属性节点