• 对象


      对象的概念:

        基本数据类型:都是单一的值 ,值和值之间没有任何联系  例如:" hello ",123,true . . . 

          使用基本数据的类型,我们所创建的变量都是独立的,不能成为一个整体。

        对象属于一种复合的数据类型,在对象中可以保存多个不同数据类型的属性。

          对象相当于一个容器,把不同的单独的个体组合到一块,成为一个整体。

      对象的创建方式:

        1.构造函数:   var  obj = new Object( ) ;

              obj . name = " 孙悟空 " ; // 使用  .  的方式添加属性和值

              obj [ age ] = 19;   //   使用 [ ] 的方式添加属性和值

        2.字面量:    var obj2 = {

              name : "  孙悟空 " ,

              age : 18 

             } 

        对象的分类:

          1.内建对象:

            - 由ES标准中定义的对象,在任何的 ES 的实现中都可以使用。

            - 比如:Array  Boolean  Date   Math  Number  String  RegExp  Function  Events

           2.宿主对象:

             - 由JS的运行环境提供的对象,目前来讲主要是指浏览器提供的对象

             -  BOM(Window,Navigator,Screen,History,Location)   

              DOM(Document,Element,Attribute,Event)

           3.自定义对象:

             - 由开发人员自己创建的对象

      创建对象:

        方式一:

          - 使用 new 关键字调用的函数,是构造函数construction

             构造函数是专门用来创建对象的函数

           - 使用 typeof 检查一个对象时,会返回object

           var   obj = new  Object () ;

           在对象中保存的值称为属相,向对象添加属性 —>   语法:对象 . 属性名 = 属性值 ; // obj . name = " 孙悟空 “ ;

             - 对象的属性名不强制要求遵守标志符的规范(什么乱七八糟的名字都可以使用) // obj . var = " hello " ;

             - 但是我们使用中还是尽量按照标识符的规范去做

         注意:如果要使用特殊的属性名,不能采用 . 的方式来操作,需要使用另外一种方式:

            使用 [ ] 这种形式去操作属性,更加灵活

            在 [ ] 中可以直接传递一个变量,这个变量值是多少就会读取哪个属性

              语法:

                对象[ " 属性名 " ] = 属性值;

              例:

                obj [ " 123 " ] = 789 ;   

                obj [ " nihao " ] = " 你好 " ;

                var  n = "123" ;

                console . log(obj [ n ] ) ;  // n = "123"

          方式二:

           - 使用对象字面量创建对象

              在创建对象时,直接指定对象中的属性,对象字面量的属性名可以家引号也可以不加,建议不加  

            语法:{ 属性名:属性值,属性名:属性值  . . .  }

            var  obj2 = {

              name : " 猪八戒 ” ,

              age : 28 ,

              gender : " 男 " 

            } ;

      查询对象:

        读取对象中的属相 ,语法:对象 . 属性名 ;// obj . name ;

        如果读取对象中没有的属性,不会报错而是会返回undefined

      修改对象的属性:

        修改对象中的属相 ,语法:对象 . 属性名 = 新值 ;// obj . name = "猪八戒" ;

      删除对象的属性:

        删除对象的属性,语法:delete 对象 . 属性名 ; // delete  obj . name  

      in 运算符:

        检查一个对象中是否含有指定的属性,如果有则返回 true,没有则返回 false

        语法:

        " 属性名 "  in  对象 ; 

        " name "   in  obj ;

      特别注意:

        - JS中的变量都是保存在栈内存中存储的 

        - 值与值之间是独立存在的,修改一个变量不会影响其他的变量

             var  a  = 123 ;

             var  b = a ;

             a ++ ;

             console . log ( ' a = ' + a ) ;   //124

             console . log ( ' b = ' + b ) ;   //123

               

        - 对象是保存到堆内存中,每创建一个新的对象,就会在推内存中开辟出一个新的空间,

          而变量保存的是对象的内存地址(对象的引用),如果两个变量保存的是同一个对象引用,

          当一个通过一个变量修改属性时,另一个也会受到影响

           

          当一个复制对象清空时,并不影响被复制对象中的数据  

           

          - 当比较两个基本数据类型的值时,就是比较值。

          - 而比较两个引用数据类型时,它是比较的对象的内存地址,如果两个对象是一模一样,但是地址不同,他也会返回 false

           

  • 相关阅读:
    Oracle学习
    挑战练习11.5 恢复CrimeFragment的边距
    844. Backspace String Compare
    496. Next Greater Element I
    682. Baseball Game
    707. Design Linked List
    挑战练习10.6 实现高效的RecyclerView刷新
    挑战练习9.5 日期格式化
    挑战练习8.8 RecyclerView ViewType
    挑战练习6.5 限制作弊次数
  • 原文地址:https://www.cnblogs.com/qtbb/p/11224295.html
Copyright © 2020-2023  润新知