indexOf,但用于对象
indexOf but for objects?
我想查看一个对象,并将其存在的每个属性分配给一个变量。
有4种可能的属性。有些物体有全部4个。有些人可能只有两个。
如何检查一个特定的属性是否存在?是否有一个等效的indexOf()数组,但对象代替?
使用in
关键词:
"key" in object
返回true
或false
,取决于对象或其原型链中的任何对象是否具有该属性。
你也可以使用object.hasOwnProperty("key")
,只有当对象将key
作为其自身的属性而不是其原型时,它才会是true
。例子:
var object = {};
"toString" in object; // true
object.hasOwnProperty("toString"); // false
注意(根据@dandavis的评论),如果object
有一个名为hasOwnProperty
的自定义属性,这将受到阻挠;为了解决这个问题,使用hasOwnProperty.call(object, "key")
。例子:
var a = {hasOwnProperty: Boolean};
a.hasOwnProperty('name'); // true
hasOwnProperty.call(a, 'name'); // false
如果您只对直接在对象上设置的属性感兴趣(不能通过原型链访问),那么hasOwnProperty
将提供一个布尔值,true
,如果对象具有指定的属性。
例如:如果testObject.propertyToCheckFor
存在,则testObject.hasOwnProperty('propertyToCheckFor')
返回true
,否则返回false
。
请参阅下面的代码以获得更详细的示例:
var obj1 = {
a: 1
};
var obj2 = {
a: 1,
b: 2
};
var obj3 = {
b: 2,
c: 3
};
var obj4 = {
a: 1,
b: 2,
c: 3
};
// For dispaly purposes
document.write('<pre>' + JSON.stringify({
obj1: {
hasA: obj1.hasOwnProperty('a'),
hasB: obj1.hasOwnProperty('b'),
hasC: obj1.hasOwnProperty('c')
},
obj2: {
hasA: obj2.hasOwnProperty('a'),
hasB: obj2.hasOwnProperty('b'),
hasC: obj2.hasOwnProperty('c')
},
obj3: {
hasA: obj3.hasOwnProperty('a'),
hasB: obj3.hasOwnProperty('b'),
hasC: obj3.hasOwnProperty('c')
},
obj4: {
hasA: obj4.hasOwnProperty('a'),
hasB: obj4.hasOwnProperty('b'),
hasC: obj4.hasOwnProperty('c')
}
}, null, 2) + '</pre>');
var obj = {
foo: 1,
bar: 2,
baz: 3
}
Object.keys(obj).forEach(function(key) {
window[key] = obj[key]
})
console.log(foo, bar, baz)
或在ES2015
const obj = {
foo: 1,
bar: 2,
baz: 3
}
function assignPrivateVars() {
let {foo, bar, baz} = obj;
console.log(foo, bar, baz);
}
assignPrivateVars();
可以使用解构赋值。如果没有定义value,变量将被设置为undefined
。你也可以在解构delete
变量后通过引用检查变量是否被定义。
var data = {a:1, b:2, c:3};
var {a, b, c, d} = data; // `d`: `undefined`
相关文章:
- 文本表示法VS.构造函数,用于在JavaScript中创建对象
- jQuery对象从html表中查询为两个一维数组,用于Chartist图表
- 如何将原型用于自定义方法和对象操作
- ES6 const,用于在JavaScript中创建对象原型;这是一种模式吗
- FilterHeader不适用于模型字段类型对象
- 更改对象函数仅用于示例
- Javascript使用本地存储,回调对象并用Json更改为一个字符串以用于填充函数
- 将其用于对象引用
- Vue.js 数据对象不适用于某些 lodash 函数
- JSHint 错误“对象不支持此属性或方法”用于 javascript 闭包
- .pop() 可以用于 JavaScript 中的对象数组吗?
- 用于创建 JSON 对象的 Javascript 递归
- 将对象用于ajax和php
- 我可以用javascript扩展控制台对象(用于重新路由日志记录)吗
- Socket.io——一个对象用于多个用户
- 我可以动态地改变'likeable'对象用于Facebook的Like按钮
- 在DOM中找不到RequireJs对象(用于UI访问)
- 如何将jQuery对象用于选择框
- 如何将JSON对象用于引导树而不是JSON文件
- 在JavaScript中克隆FileList对象用于文件上传