zoukankan      html  css  js  c++  java
  • JavaScript对象基础知识总结

    1、什么叫JavaScript对象?

      定义:名值对的集合。简单的讲就是容纳属性值和属性值的容器,这些属性可以是无序的,基本上JavaScript中所有的事物都可以看成对象。

      拓展:我们经常说,数组也是对象,那么,我们从对象定义中名值对的角度看,数组与普通的对象相比,他的名值对是由顺序的而已,即每一个arry[i]对应着固定的数值,所以,可以说,数组是特殊的对象,特殊就特殊在他的名值对是有序的,现在再看数组是不是简单多了呢?

      

    2、创建对象 的四种方法:

      分别为:

      ①对象字面量法;②new关键字创建法;③构造函数法;④ES5提供的Object.creat()方法;

      ①对象字面量法:

      创建方法:

      var  school={name:'cumt',

            'first-road':'大学路',

            Iscollege:true,

            students:50000,

            };

      需要注意的几个点:

      1、属性名如果是以数字开头,则属性名必须加上单引号或者双引号;如果属性名中包含JavaScript的保留字或者非法字符(-等字符)必须要加单引号或者双引号。其他情况可以不必加单引号或者双引号。

      2、属性值如果是字符串,则属性值必加单引号或者双引号;如果属性值是数字、布尔值、undefined、NaN或者null则可以不用加引号。

      3、属性之间分隔用逗号分开,而不是用分号(切记)。

      ②通过var关键字和new关键字创建对象:

      创建方法:

      var person=new Object(){name:'josn',

              sex:male,

              'girl-friend':lily,

              hometown:'江苏',

            };

      ③构造函数法:

      var preson=function(){name:'AJax',

                valuble:true,

                times:'often',

            };

    说明:

    1、前面说到数组是特殊的对象,那么在这儿,聪明的大家肯定早就看出来了,函数它也是对象,其实仔细想想:函数是一种对象,而我们却可以利用函数来定义一个对象,乍一听,咋感觉这么像数学里面的充分必要的关系,但实际上用这种关系解释他们是解释不通的也是没必要的,只要理解:函数是一种对象,通过函数可以构造对象,这就够了。关于函数的总结稍后会在下一贴随笔中细说。

    2、既然第一条说到了JavaScript的对象,咱们就来理一理JavaScript中到底有多少内置对象(面试的时候在这个问题上栽过一回,当时就问蒙了,只零零散散的回答了一部分):JavaScript中的内置对象有17个之多,常用的是Array对象、Date对象、Regexp(正则表达式)对象、String对象、Global对象 ,Object对象,Arguments对象,Boolean对象,Error对象,Function对象,Math对象,Number对象等,具体的内置对象使用方法请参照:https://www.cnblogs.com/Arther-J/p/5388633.html

      ④通过Object.create()方法创建对象:

      在ES5中,提供了一种创建对象的新方法:通过Object.create()创建对象,使用方法如下:

      var dream=Object.create({owner:'mine',

                      distance:'step',

                     method:'天助自助者',

                 });

    3、对象属性的访问、添加、修改、删除、遍历操作方法

      通例:

      var  obj={name:'攻城狮',

          age:18,

          sex:'male',

          hobby:'fishing',

        };

      ①对象属性的访问:

      方法为:访问对象的属性时,方法有两种:对象名.属性名    或者   对象名.['属性名']    无论是用  点   的形式还是方括号的形式都是可以的,至于这俩有啥区别,待会儿咱在慢慢扯。

    例:我要得到obj这个对象中的age属性的属性值,我可以这样写:console.log(obj.age);

                       当然我也可以这样写:console.log(obj['age']);

      得到的结果是一样的,都是   18.

      ②添加对象的属性:

       例:我们想要给上面的obj对象中添加一个sayhi的属性,我们可以这样做:

        obj.sayhi='hello';

        访问:console.log(obj.sayhi);       结果为:hello

      ③修改对象的属性值:

      修改对象属性值其实就是对对象属性值进行新的赋值,如果对象中这个属性原来就存在,我们称之为修改属性值,那么如果这个属性原来在对象中压根就没有,那么这就是上面刚刚说的添加对象的属性。

      例如:我们现在想把obj的sex属性名的值换成female,我们可以这么写:

      obj.sex='female';

      相当于重新给sex属性名赋了一个值

      这个时候我们再访问:console.log(obj.sex);就会发现结果变成了  female

      ④删除对象的属性:

      我们如果想要删除对象中原来存在的某个属性,JavaScript提供的方法是delete

      例如,我们现在想把上面obj的hobby的属性删掉

      在删掉之前呢,我们先来访问一下obj的属性,看看他的结果,方便和删除后做对比

      console.log(obj.hobby);    结果正如大家所预料的,是  fishing

      那,我们来删除hobby属性,方法是:

          delete  obj.hobby;

      这会儿咱再来访问:

        console.log(obj.hobby);   就会发现结果变成了  undefined,我们删除了hobby属性,访问了一个不存在的属性,结果自然是undefined

      ⑤遍历对象的属性:

      遍历 JavaScript 对象中的属性没有其他语言那么简单,因为两个因素会影响属性的遍历:对象属性的属性描述符 (property descriptor) 的 [[Enumerable]] 特性为 true (可枚举)才能被 for-in 访问;如果在对象本身没有找到属性,接下来会在原型链上查找,访问属性时会沿着整个原型链从下到上查找属性。所以说遍历属性时,要考虑这两个因素。

      下面我们就来试试,使用for..in取出obj对象中的全部自有属性和属性值:

      var x;

      for(x in obj){

      document.write(i+':'+house[i]+';<br/>');

      };

     结果为:

    name:攻城狮;
    age:18;
    sex:female;
    sayhi:hello;

    写在末尾:

    本篇关于对象的知识总结都是些比较基础的东西,适合于初学者,希望各位前辈、高手、老师指点分享经验和看法,也欢迎在评论区交流看法。

  • 相关阅读:
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
  • 原文地址:https://www.cnblogs.com/yezibucunzai/p/8643132.html
Copyright © 2011-2022 走看看