对象数据类型的详细解读

对象数据类型Object

普通对象    {}        Object 类数组、实例、原型对象……

数组对象    []        Array                  

正则对象    //        RegExp

日期对象               Date

Set / Map

……

普通对象

定义:对象是由零到多组键值对(属性名和属性值)组成的

属性名(键)不是变量名,也不是变量,它是对象的一个属性(特征);

属性名一般都是一个字符串类型的,下面的例子中的name,可以写成name,也可以写为"name",当然也可以是数字或者Symbol等基本类型的值

属性名不能是对象或者函数(不能是引用数据类型),如果对象或者函数作为属性名,会把其转换为字符串作为属性名

例:var x={};

var y={age:11,0:100}

[Symbol('AA')]:200,    //对于Symbol类型的属性名,需要基于[]包裹起来,保证语法的正确性

[{xx:"xxx"}]:300,          

//属性名如果是对象,那么该对象最后会变为字符串,({xx:"xxx"}).toString()->"{object Object}"

}

获取一个对象中某个属性名对应的属性值,这种方式被称为: “对象的成员访问”

对象.属性名

这种方式不适用于数字或Symbol的类型名,这样的情况只能基于对象[属性名]来访问

对象[属性名]

这种方式必须指定好属性的类型     obj[name]和obj["name"]代表的不是一个情况。

例:var obj={0:100}

console.log(obj.0)                    //语法错误:Uncaught SyntaxError: missing ) after argument list

console.log(obj[0])                  //100

console.log(obj.age)                //undefined            访问对象的某个成员,如果当前的成员不存在,不会报错,返回undefined

console.log(a)                        //如果是访问一个不存在的变量,则会报错 z is not defined

obj[name]和obj["name"]代表的不是一个情况

例:var x=10;

var obj={

x:"lili",

10:100,

}

console.log(obj.x)                    lili            访问当前对象属性名是x对应的属性值"lili"

console.log(obj["x"])                lili和上面的操作一个意思

console.log(obj[x])                    100     首先获取x变量存储的值,把存储的值作为属性名,进行对象的成员访问            obj[10]    ->    100

obj["值"],直接是对象的成员访问

obj[变量],首先获取变量值,然后把变量值作为属性名,再进行成员访问

console.log([x])                        [10]                    

console.log(x)                          10

"x"、'x'是字符串类型的值

x 它不是值,它是一个变量,代表存储的10

对象的属性名和变量没有关系,不是一个东西

对象的属性名也是各种的类型的值:字符串、数字、Symbol……

变量只是一个名字,没有所谓的类型,只是用来存储值的

对象的属性名(特征)也是具体的值,存储的结果是对当前特征的描述

管理一个对象的成员

直接编写在{}大括号当中,对于Symbol或者对象类型的属性名,以及需要把一个变量存储的值作为属性名,都需要基于中括号[]包裹起来,保证语法的正确性。

var symb=Symbol("AA");

var obj={

name:"珠峰培训",

0:100,

symb:"AAA",                //这样处理,属性名就是"symb",而不是这个变量存储的值

[symb]:"AAA"               //这样处理,属性名是Symbol("AA"),等同于把变量存储的值作为属性名

}

console.log(obj)

基于JS动态管理成员(新增/修改/删除)

对象的成员是不允许重复的:0和"0"或者true和"true" null和"null"是按照相同的成员处理的,在动态管控的时候,如果之前有这个成员,则是修改成员的属性值,没有这个成员,才是给新增这个成员

var symb=Symbol("AA")

var obj={

name:"lili",

0:100,

}

新增obj.age=11;

obj["age"]=11

修改obj["symb"]="xxx"                    symb="xxx"

obj[symb]="xxx"                       Symbol("AA")="xxx

obj["name"]=123                       name:123

删除

假删除:利用访问对象一个不存在的成员,返回undefined或null的特征,我们把某个成员的值修改为undefined或null,以后再获取这个成员,结果也是undefined或null,我们可以认为当前成员是不存在的,但本质还是存在的,称为假删除。

例:obj.name=null

obj.name=undefined

真删除:彻底从对象中移除这个成员

例:delete obj["name"];    

特殊对象

数组或者类数组对象(集合)

属性名(成员 / 键)是数字,而且数字从零开始,逐级递增,有顺序和规律的数字属性名,被称为“索引”,用来记录每一项的位置信息

有一个length成员,存储集合的长度(个数)

通过数组或类数组 [索引]  进行成员访问以及相关的操作

数组 => 它是Array类的实例,用  []  包裹

例  var arr=[10,20,30];

console.log(arr)

console.log(arr[1])                  20

console.log(arr[arr.length-1])  30

console.log(arr.length-1)        2

类数组(类似于数组,但不是数组) 不是Array的实例,虽然结构类似,但是不能直接使用数组的方法。

例:var obj={

0:10,

1:20,

2:30,

length:3

}

console.log(obj)

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

推荐阅读更多精彩内容