对象

  对象的概念:

    基本数据类型:都是单一的值 ,值和值之间没有任何联系  例如:" 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

       

原文地址:https://www.cnblogs.com/qtbb/p/11224295.html