JavaScript对象以及对象遍历for... in循环(隐式迭代)

面向对象

类----定义属性和方法

对象

类的具体实现,继承了类所定义的属性和方法(是一种数据类型)

类是对象的抽象,对象是类的实例

程序 = 算法 + 数据结构

js是基于对象的编程语言

对象可以定义和描述很复杂的数据,让算法变的简单高效

  • js中的对象?

    js语言中一切皆为对象,比如数字、字符串、数组、Math、Object、函数

    js中对象的本质:属性和方法的集合(无序,所以对象没有length属性)

  • 用官方一点的语言来解释对象:

​ 什么是对象,其实就是一种类型,即引用类型。而对象的值就是引用类型的实例。在 ECMAScript 中引用类型是一种数据结构,用于将数据和功能组织在一起。它也常被称做为类,但 ECMAScript6以前却没有这种东西。虽然 ECMAScript 是一门面向对象的语言,却不具备传统面向对象语言所支持的类等基本结构。

扫描二维码关注公众号,回复: 10768227 查看本文章

创建对象的方式:

第一种方式:

    字面量  var obj = {
        键值对
        key:value
    }
  • 对象: object
  • 字面量方式创建对象
  • 键值对 key: value 键和值之间用:分割,多个键值对之间用,分割
     var guoer = {
       name: 'yangguo',
       arxhz: function () {
         console.log('黯然销魂掌')
       },
       age: 30
     }

第二种方式:

  • 通过new运算符创建对象,Object注意首字母大写
  • 给guoer这个对象新增一个name属性,赋值为yangguo
    var guoer = new Object()
    
    guoer.name = 'yangguo'
    guoer.arxhz = function () {
      console.log('黯然销魂掌')
    }
    // 对象名.属性名
    console.log(guoer.name)
    // 对象名.方法名()
    guoer.arxhz()

对象遍历:for…in循环(隐式迭代)

  • 遍历:一个一个的查看
  • 遍历对象使用for in
  • for in的语法: for (var 变量 in 要遍历的对象) { }
  • 根据对象的键值对来循环,对象里有多少个键值对for就会循环多少次
  • 每一次循环得到的key就是当前键(属性名或者方法名)
<script>
    var guoer = {
      name: 'yangguo',
      arxhz: function () {
        console.log('黯然销魂掌')
      }
    }

    console.log(guoer.name)
    console.log(guoer['name']) // name是属性名,这里加引号是固定写法
    var a = 'name'
    console.log(guoer.a) // undefined 因为guoer里面没有a属性
    console.log(guoer[a]) // 这里的a不加引号,会解析a变量,把a替换成'name',相当于guoer['name']

    // 如果我们确切的只是属性名是什么 那么就直接 对象名.属性名
    // 如果属性名是存在一个变量里的  这个时候就需要 对象名[变量名]

     guoer.arxhz()

     var a = 'name'
     guoer.a // undefined
     guoer[a]

    for (var key in guoer) {
      console.log(key)
      // 如果这么写的话是去guoer这个对象里直接找key这个属性,并不会把key作为变量去取值
      // console.log(guoer.key) // undefined
      // 需要根据key变量先取到值,再用变量的值去对象里取
      // 对象名[变量名]  这里的变量里存的是对象的属性名
      console.log(guoer[key])
    }
  </script>
发布了62 篇原创文章 · 获赞 0 · 访问量 538

猜你喜欢

转载自blog.csdn.net/qq_43633053/article/details/105422834