专业编程基础技术教程

网站首页 > 基础教程 正文

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

ccvgpt 2024-10-23 09:23:50 基础教程 9 ℃

在日常开发中,经常会遇见判断对象是否存在某个特定的属性这种场景,今天来记录一下比较常用的方法(主要是后面三种方法)

  1. 针对属性值非空来判断
// 这种方法是根据属性值非空
// 属性值为布尔计算值true
const obj = {}
if(!obj.a){

}else{

}
  1. 针对属性值非undefined来判断
// 这种方法是根据属性值非undefined
const obj = {}
if(obj.a !== undefined){

}else{

}
  1. 针对自身可遍历属性来判断
// 使用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{

}


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

  1. 针对自身属性来判断
// 使用obj.hasOwnProperty来判断
// 这种方法可以规避不可遍历的属性

var obj = Object.create({});
Object.defineProperty(obj, "foo", { value: "bar" });
if(obj.hasOwnProperty('foo')){
	//存在
}else{

}

//obj.hasOwnProperty只能收集自身属性
//无法收集原型上的属性
Object.prototype.a = 1
if(obj.hasOwnProperty('a')){
	
}else{
	//不存在
}



  1. 使用in判断属性(无原型链和遍历属性限制)
// 使用in运算符来判断
// 这种方法可以判断自身或者原型上的属性,使用范围最广,无限制

var obj = Object.create({});
Object.defineProperty(obj, "foo", { value: "bar" });
if('foo' in obj){
	//存在
}else{

}

Object.prototype.a = 1
if('a' in obj){
	//存在
}else{
	
}


Tags:

最近发表
标签列表