javascript检测对象中是否存在某个属性
来源:互联网 发布:淘宝买刀剑会被扣留不 编辑:程序博客网 时间:2024/05/16 14:17
检测对象中属性的存在与否可以通过几种方法来判断。
方法一:使用in关键字
该方法可以判断对象的自有属性和继承来的属性是否存在(in能检测到原型链的属性)
var cat = {name:'Tom'};console.log('name' in cat); //true 自有属性存在console.log('weight' in cat); //falseconsole.log('toString' in cat); //true 继承属性存在
in关键字的使用
//数组中
//Arrayvar arr = ['cat','pig','dog','monkey','fish'];console.log(0 in arr); //trueconsole.log(4 in arr); //trueconsole.log(5 in arr); //falseconsole.log('pig' in arr); //false 必须指定索引号,而不是该索引的值console.log('length' in arr); //true length为该数组的属性//预定义对象
console.log('PI' in Math); //true//自定义对象
var cat = {name:'Tom',year:10};console.log('name' in cat); //trueconsole.log('Tom' in cat); //false//必须指定一个对象在操作的右边,比如你可以使用字符串构造函数创建字符串,而不是指定字符串
var color1 = new String('green');console.log('length' in color1); //truevar color2 ='green';console.log('length' in color2); //报措color2 is not a String object//若使用delete删除属性,in操作将返回假
var cat = {name:'Tom',year:10};delete cat.year;console.log('year' in cat); //falsevar arr = ['cat','pig','dog','monkey','fish'];delete arr[0];console.log(0 in arr); //false//如果将某个属性设置为未定义但是不删除它,in操作将返回真
var cat = {name:'Tom',year:10};cat.year = undefined;console.log('year' in cat); //true
方法二:.使用对象的hasOwnProperty()方法
var obj = new Object();obj.prop = 'exist';function changeObj(){obj.newProp = obj.prop;deleteobj.prop;};console.log(obj.hasOwnProperty('prop')); // return true 自有属性存在propchangeObj();console.log(obj.hasOwnProperty('prop')); // return false 自有属性不存在propconsole.log(obj.hasOwnProperty('toString')); //return false 这是一个继承属性
hasOwnProperty的使用
//对象属性迭代
var cat = {Name:'Tom'};for(var name in cat){if(cat.hasOwnProperty(name)){alert('这只cat'+name+'的名字是'+cat[name]);}else{alert(name);}}
//使用hasOwnProperty作为属性名
var obj = { hasOwnProperty: function(){ return false; }, bar: 'Hello'};console.log(obj.hasOwnProperty('bar')); //falseconsole.log(({}).hasOwnProperty.call(obj,'bar')); //trueconsole.log(Object.prototype.hasOwnProperty.call(obj, 'bar'));<span style="font-family: Arial, Helvetica, sans-serif;">//true</span>
方法三:.使用undefined方法
自有属性和继承属性均可判断。var cat = {name:'Tom'};console.log(cat.name!==undefined); //true console.log(cat.weight!==undefined); //falseconsole.log(cat.toString!==undefined); //true
该方法存在一个问题,如果属性的值就是undefined的话,该方法不能返回想要的结果,如下。
var cat = {name:'undefined'};console.log(cat.name!==undefined); //false 属性存在 但是值是undefined console.log(cat.weight!==undefined); //falseconsole.log(cat.toString!==undefined); //true
1 0
- javascript,检测对象中是否存在某个属性
- javascript检测对象中是否存在某个属性
- javascript,检测对象中是否存在某个属性
- javascript检测对象中是否存在某个属性判断方法小结
- javascript检测对象中是否存在某个属性判断方法小结
- java检测对象中是否存在某个属性
- js检测对象中是否存在某个属性
- javascript中检测某个字符串在数组中是否存在
- JS检测对象中是否有某个属性或方法
- jquery判断对象某个属性是否存在
- JavaScript判断对象是否含有某个属性
- JavaScript判断对象是否含有某个属性
- 检测某个元素是否存在
- JavaScript中检测变量是否存在
- 如何判断对象是否存在某个私有属性
- JavaScript 检测对象是否含有自身属性
- JavaScript中判断是否存在某属性
- 利用runtime检测这个对象是否存在某属性?
- jQuery Validation Plugin验证插件手动验证
- 可序列化
- iOS中tableView每一个section的header的悬浮位置的解决
- Ubuntu 14.04 上安装 C Sharp 开发环境。
- 跨windows和linux的线程类
- javascript检测对象中是否存在某个属性
- Android Context完全解析 转郭神名作并简略总结
- 2016.1.24总结
- Socket编程
- jq无限极下拉菜单和点击展开菜单
- 大型网站架构之分布式消息队列
- MySql
- HDU1059
- C#中SqlCommandBuilder批量数据增加修改