龙空技术网

【JS 判断自身属性】判断对象属性是否存在的几种方法

夏末 78

前言:

此刻各位老铁们对“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或者判断