开篇之前我们先说一个知识点,重要重要重要

  1. var person={
  2. name:"taowuhua",
  3. age:"18",
  4. sex:"male",
  5. height:180
  6. }
  7. person.name==person["name"]

person.name==person[“name”],这里藏着一个底层转换,对于点调用的这种方式最终转化为字符串访问,在程序中会遇到的情况就是。我们遍历对象的时候只能使用字符串访问这种形式。详情看下面的对象枚举。

一、forIn

for循环遍历有length或者size的对象,对于没有length或者size的对象则不能嚣张了。需要借助forIn循环进行遍历
语法格式:for (var key in object) {};//key为属性名 object为对象
例如:

  1. var person={
  2. name:"taowuhua",
  3. age:"18",
  4. sex:"male",
  5. height:180
  6. }
  7. for (var key in person) {
  8. console.log("字符串形式访问"+person[key])
  9. }
  10. for (var key in person) {
  11. console.log("点访问"+person.key)
  12. }

打印结果如下:
image.png

二、hasOwnProperty判断属性是否自己创建的属性

  1. var person={
  2. name:"taowuhua",
  3. age:"18",
  4. sex:"male",
  5. height:180,
  6. __proto__:{
  7. lastName:"andy"
  8. }
  9. }
  10. for (const key in person) {
  11. if (person.hasOwnProperty(key)) {
  12. console.log(key)
  13. }
  14. }

对于原型上面的属性就不会打印

三、区别数组对象

3.1 instanceOf

1) A 对象的原型链上有没有B的原型 A instanceOf B //
2)判断是对象还是数组
image.png

3.2 构造函数construct

image.png

3.3 toString

Object.protoType.tostring.call()