美文网首页
【冰山白皮书】JS中的对象

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

作者: 冰山工作室沙翼 | 来源:发表于2019-03-27 16:30 被阅读0次

    关于我们

    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

    相关文章

      网友评论

          本文标题:【冰山白皮书】JS中的对象

          本文链接:https://www.haomeiwen.com/subject/ttttbqtx.html