2020-09-18 JavaScript对象

一、JavaScript对象

     1、对象的认识

        JavaScript 中的所有事物都是对象:字符串、数字、数组、日期,等等。在JavaScript 中,对象是拥有属性和方法的数据。

        通常对象是由一对或者多对属性(包含属性名和属性值)组成的集合,属性名也叫做键名,属性值也叫做键值,所以对象的属性也可以称为键值对。

              对象:一组属性的结合。

              属性:与对象相关的值。

              方法:能够在对象上执行的动作。

      2、对象的创建                        

              (1)字面量的方式创建对象:

(1)

            注:{} 是对象的界定符,就是对象的字面量。

                   用 “.” 点操作符或者[ ]中括号法来获得一个对象的属性。对象属性的访问与使用中,点语法是有局限的,他只能访问符合标识符规范的属性。

       (2)判断对象的界定符{}

                在语句上下文出现 {} 是代码块(多条语句的集合), 不是对象。例如:条件循环判断语句。

                在表达式上下文出现的 {} 才是对象的界定符,才表示一个对象。

       (3)对象的属性

                对象的属性名是字符串类型。

                对象的属性名不是标识符,所以不用遵循标识符的命名规范。

                注意:

                         1. 如果属性名符合标识符规范可以不加引号。

                         2.如果属性名不符合标识符规范或者是一些关键字,保留字必须加引号。

                         3.特殊的情况下, 属性必须加引号,如:属性为特殊字符、数字,属性中有空格或关键字、保留字。

      (4)属性的不同调用方式

               获取对象的一个属性值方法:(对象.属性名)。

               获取不符合标识符规范的属性值,使用中括号语法, 中括号放字符串:(对象["属性名"]),

               中括号内的属性必须加引号, 如果不加引号则表示一个变量。

      (5)对象同名属性覆盖:

               修改属性值:对象.属性名 = "新的属性值"。最后打印出的对象同名属性被覆盖了新的属性值。注:对象的属性名不能重复,如果重复,后加的属性值覆盖之前同名的属性值。

      (6)如果对象属性不是字符串会隐式转为字符串。

         注:对象的属性值可以为任意类型。比如数字、字符串、布尔值、正则表达式、对象、数组、函数……

       (7) 对象的方法:能够在对象上执行的动作。

                 例如:当对象的属性的值是一个函数的时候,我们称这个函数是对象的方法。

       (8)对象的常用操作:


                (9)对象的遍历

                           for...in 循环遍历对象:

              (10)构造函数创建对象

                          内置的构造函数:Number 、String、Boolean、Object、Function、Array。

                          new是一个运算符,和+-*/一样是一个运算符。表示新创建一个对象。

                          例:js提供了一个内置的构造函数Object用来创建对象:var obj = new Object()。

                          注意:构造函数创建对象一定要使用new 操作符。

              构造函数内部原理:构造函数必须加new操作符,原本他只是一个普通的函数,加new就能产生构造函数的功能,构造函数的功能就是创建对象。

              普通函数一旦使用new操作符,函数内部将会隐式执行三步:

                     1.在函数内部创建一个变量this,值为空对象:var this = {};

                     2.执行函数体中的代码;

                     3.返回this对象。

                     构造函数和普通函数的区别:

                            1.普通函数是正常调用, 构造函数是通过new操作符来创建对象。

                            2.构造函数是普通函数的一类,自定义的构造函数遵循大驼峰式命名规则 Person TheFirstName。

                            3.普通函数默认返回undefined, 但是我们可以通过显示的return关键字来替换函数返回内容。构造函数默认返回对象,明确返回基本数据类型的值则无效。构造函数就是用来创建对象的, 所以构造函数内必须返回一个对象。如果明确使用return 返回对象,那么将会替换默认返回的对象。

     注:构造函数可以返回的引用数据类型有:Array数组、Object对象;引用类型:Function函数。

            4.构造函数可以通过参数来动态改变对象的属性值。

二、Object 类型

        ⼤多数引⽤类型值都是Object类型的实例;⽽且Object也是ECMAScript中使⽤最多的⼀个类型。虽然Object的实例不具备多少功能,但对于在应⽤程序中存储和传输数据⽽⾔,是⾮常理想的选择。

       创建Object实例的⽅式有两种。第⼀种是使⽤new操作符后跟Object构造函数:

       另⼀种⽅式是使⽤对象字⾯量表⽰法。对象字⾯量是对象定义的⼀种简写形式,⽬的在于简化创建包含⼤量属性的对象的过程。下⾯这个例⼦就使⽤了对象字⾯量语法定义了与前⾯那个例⼦中相同的person对象:

三、基本包装类型

           为了便于操作基本类型值,ECMAScript还提供了3个特殊的引⽤类型:Boolean、Number和String。这些类型与其他引⽤类型相似,但同时也具有与各⾃的基本类型相应的特殊⾏为。实际上,每当读取⼀个基本类型值的时候,后台就会创建⼀个对应的基本包装类型的对象,从⽽让我们能够调⽤⼀些⽅法来操作这些数据。

           1. 只有对象才有属性和方法, 基本数据类型是没有属性和方法的。

           2. 如果给基本数据类型的数据添加属性会调用包装类, 没有包装类就报错。

           3. 数字、字符串、布尔值的包装类:

                4.undefined null 没有包装类

                5.js没有类的概念, 其他语言中类是用来创建对象的, 所以js里常把构造函数叫做类,通过构造函数包装成为一个对象。

                6.包装类的作用:把不能设置和获取属性的基本数据类型包装成为一个对象。

        引⽤类型与基本包装类型的主要区别就是对象的⽣存期。使⽤new操作符创建的引⽤类型的实例,在执⾏流离开当前作⽤域之前都⼀直保存在内存中。⽽⾃动创建的基本包装类型的对象,则只存在于⼀⾏代码的执⾏瞬间,然后⽴即被销毁。这意味着我们不能在运⾏时为基本类型值添加属性和⽅法。

四、JSON

           JSON(JavaScriptObject Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式。同时,JSON是JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON数据不须要任何特殊的 API 或工具包。在JSON中,有两种结构:对象和数组。

           1、对象:

                         var json = {"name":"伊冰","age": 18};

                 一个对象以'{"开始,"}'结束,“key/value”之间运用 “,”分隔。

           2、数组:

                         var Json = [{"name" : "伊冰", "age" : 18}, {"name" : "慜益学", "age" : 22}];

                数组是值的有序集合。一个数组以“[”开始,“]”结束。值之间运用 “,”分隔。

           注:JSON是对象格式的字符串,属性名必须加引号,并且JSON内的引号必须是双引号。

           3、JSON的方式

          (1)stringify()      //  把对象转为JSON

          (2)parse()         //  把JSON转为对象

           注:在数据传输过程中,JSON是以字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换要注意在最外层的{}或[]外加上单引号。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,324评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,356评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,328评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,147评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,160评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,115评论 1 296
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,025评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,867评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,307评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,528评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,688评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,409评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,001评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,657评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,811评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,685评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,573评论 2 353