前言:
此刻各位老铁们对“jsundefined判断”大体比较珍视,兄弟们都需要知道一些“jsundefined判断”的相关内容。那么小编在网摘上收集了一些有关“jsundefined判断””的相关文章,希望我们能喜欢,看官们快快来学习一下吧!在日常开发中,经常会遇见判断对象是否存在某个特定的属性这种场景,今天来记录一下比较常用的方法(主要是后面三种方法)
针对属性值非空来判断
// 这种方法是根据属性值非空// 属性值为布尔计算值trueconst obj = {}if(!obj.a){}else{}针对属性值非undefined来判断
// 这种方法是根据属性值非undefinedconst obj = {}if(obj.a !== undefined){}else{}针对自身可遍历属性来判断
// 使用Object.keys()来收集对象属性// 根据收集的属性数组来判断var obj = { a:0, b:undefined};if(Object.keys(obj).includes('a')){ //存在}else{}//Object.keys()只能收集自身可遍历属性//无法收集不可遍历属性//比如属性描述符配置了enumerable为false,就不可收集var obj = Object.create({});Object.defineProperty(obj, "foo", { value: "bar" });if(Object.keys(obj).includes('foo')){ //不存在}else{}
针对自身属性来判断
// 使用obj.hasOwnProperty来判断// 这种方法可以规避不可遍历的属性var obj = Object.create({});Object.defineProperty(obj, "foo", { value: "bar" });if(obj.hasOwnProperty('foo')){ //存在}else{}//obj.hasOwnProperty只能收集自身属性//无法收集原型上的属性Object.prototype.a = 1if(obj.hasOwnProperty('a')){ }else{ //不存在}
使用in判断属性(无原型链和遍历属性限制)
// 使用in运算符来判断// 这种方法可以判断自身或者原型上的属性,使用范围最广,无限制var obj = Object.create({});Object.defineProperty(obj, "foo", { value: "bar" });if('foo' in obj){ //存在}else{}Object.prototype.a = 1if('a' in obj){ //存在}else{ }
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #jsundefined判断 #js或者判断