当前位置: 首页 > news >正文

对象枚举以及判断数组与对象的3种方法

1.属性的表示方法

  • obj.prop
  • obj["prop"]

实际内部原理,obj.prop会隐式转换为obj["prop"]

2.对象枚举方法

  • for in: prop in obj
  • hasOwnProperty():obg.hasOwnProperty(prop)
  • in:prop in obj
  • instanof:A instanceof B

for in:打印自己的属性以及自己设置的原型属性,但不会打印系统自带的属性

var obj={
	name : "li",
	age:23,
	sex:"male",
	__proto__:{
		lastName:"hh"
	}
}
for(prop in obj){
	console.log(obj[prop])
}

结果

hasOwnProperty():判断属性是不是自己的,是返回true,自己设的原型属性返回false,建议枚举对象的时候使用hasOwnProperty过滤一下

for(prop in obj){
	if(obj.hasOwnProperty(prop)){
		console.log(obj[prop])	
	}
}

in:查看属性是否能被对象调用,注意属性要为字符串形式

console.log("name" in obj)
console.log("lastName" in obj)
console.log("height" in obj)

instanceof:A instanceof B 看A的原型链上有无B的原型

function Person(){

}
var obj = {};
var person = new Person();
console.log(person instanceof Person);
console.log({} instanceof Object);
console.log([] instanceof Object);

注意  typeof {} 与 typeof [] 结果都为 object,所以无法根据typeof判断数组与对象

判断数组与对象的3种方法:

  • obj.constructor 

  • obj instanceof Array

  • Object.prototype.toString.call()

相关文章:

  • git的小白入门
  • windows如何配置mysql的环境变量
  • js的变量类型判断和类型的转换
  • vscode 常用设置和插件
  • 可迭代对象和类数组
  • js数组遍历方法总结与对比
  • PAT乙级 我要通过(1003)的详细解答过程
  • PAT乙级 成绩排名(1004) c++题解
  • PAT乙级 继续(3n+1)猜想(1005) c++题解(打表越界的段错误)
  • PAT乙级 素数对猜想(1007)c++实现
  • PAT乙级 说反话(1009)c++新手易懂版
  • 图的深度遍历(邻接表)SCAU c++
  • 图的广度遍历(邻接表)SCAU c++
  • 堆排序 SCAU c++
  • 归并排序(非递归)超详细解答!!
  • 2017前端实习生面试总结
  • Android 架构优化~MVP 架构改造
  • Angular Elements 及其运作原理
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • IndexedDB
  • Markdown 语法简单说明
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • STAR法则
  • Sublime Text 2/3 绑定Eclipse快捷键
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • 创建一种深思熟虑的文化
  • 从tcpdump抓包看TCP/IP协议
  • 订阅Forge Viewer所有的事件
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 对象管理器(defineProperty)学习笔记
  • 给github项目添加CI badge
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 前端性能优化--懒加载和预加载
  • 小程序 setData 学问多
  • 在weex里面使用chart图表
  • 【云吞铺子】性能抖动剖析(二)
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​如何防止网络攻击?
  • ​一些不规范的GTID使用场景
  • !$boo在php中什么意思,php前戏
  • # 数据结构
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • #在 README.md 中生成项目目录结构
  • (4)(4.6) Triducer
  • (ibm)Java 语言的 XPath API
  • (MATLAB)第五章-矩阵运算
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (一)WLAN定义和基本架构转
  • (转)linux下的时间函数使用
  • (转)Scala的“=”符号简介
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • *2 echo、printf、mkdir命令的应用
  • .net core 3.0 linux,.NET Core 3.0 的新增功能