【冰山白皮书】JS中的对象

关于我们

QQ答疑交流群:
600633658

我们的链接:

知乎 掘金 今日头条 新浪微博 前端网 思否 简书 B站

什么是对象

  1. 是由属性以及属性所对应的值组成的合集,是没有顺序的
  2. 除6种原始数据类型之外,所有的数据都是对象。

对象和原始类型区别

  1. 对象有属性,属性所对应的值可以是原始数据类型,也可以是方法,还可以是对象
  2. 对象有方法,方法是一种特殊的属性,对应的值是一个函数,用于实现某种功能,由此可见函数也是对象。

(回顾为什么String Number Boolean也可以使用方法或者调用属性)

  1. 对象是可变的,改变的本质是对象属性发生了变化。

对象的分类

内部对象

  • 错误对象:Error
  • 本地对象:Boolean String Number Array Date Function Object RegExp
  • 内置对象:解释器内置,不需要使用New global Math Json

宿主对象

运行环境提供的对象:window document

自定义对象

开发者自己创建的对象

原始类型转换到对象

  • Object(true)----{[[PrimitiveValue]]: true}
  • Object(123)----{[[PrimitiveValue]]: 123}
  • Object("abc")——{0:'a',1:'b',2:'c',length:3,[[PrimitiveValue]]: true}
  • Object(null)----{}
  • Object(undefined)----{}
    联系上文对象和原始类型区别)

对象上的两个基础方法

toString

  1. 将当前对象用字符串表示出来。
  2. 所有的内部对象和宿主对象都重写了toString方法。
    • Boolean String Number直接返回对应的字符串。
    • Array:为数组的每一项调用toString方法并将结果用逗号连接
    • Date:返回一个由日期和时间组成的字符串(不同的环境下结果不一样)
    • Function:返回函数体内部的源码
    • Object:返回[object object]
    • RegExp:返回正则表达式的直接量字符串(带转义符)
  3. 可以接受一个2~36的数字作为参数,表示需要转换的内容是几进制的

valueOf

  1. 有原始值返回原始值
  2. 没有原始值返回本身
  3. Date对象返回距离1970年1月1日0点的毫秒数

对象转换到原始类型

  1. Boolean:所有的对象转换到布尔类型都为true.(JS中只有6个值能转成false)
  2. String:先调用toString方法,再调用valueOf方法
  3. Number:先调用valueOf方法,再调用toString方法

如何创建一个对象

  1. 使用字符字面量的方式(最简单)

    var o={age:123}
    
    

    注意:属性名中如果有空格,连字符,关键字或者保留字的时候必须使用引号(在ES5中保留字可以不使用引号,但是不建议这么做)最后一个逗号需要删除,否则在IE7及以下的浏览器中会报错

  2. 使用new操作符(最标准)

    var o=new Object()
    
    var s=new String(‘abcd’)
    
    var n=new Number(123)
    
    var a=new Array(3)
    
    var d=new Date(2017/04/15)
    
    

    var a=new Array 没有参数的时候可以不写括号

  3. 使用ES5中的新方法(最精确,最麻烦)

    Object.creat()
    
    

    接受两个参数:1要继承的原型,2对象的详细描述

对象的属性的获取

两种写法:点或者方括号,点后面放属性名称,括号里面放表达式

属性获取过程详解

当JS的解释器在代码中遇到“.”或者 “[ ]”的时候将进行以下操作

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