阅读 287

JavaScript中的对象有哪些?(上)

内置对象

global对象

在浏览器中,全局对象是window+global,单就js而言,global对象才是全局对象

  • 属性:Infinity,NaN
  • 方法:escape,unescape,eval,isNaN,isFinite,parseFloat,parseInt  

math对象

所有的内置对象都是作为global对象的属性,不然无法通过原型链访问

  • 属性:PI,LN2,LOG2E,……
  • 方法:ceil,round,floor,random,……

本地对象

在使用时需要使用new关键字创建的对象

Object对象(文中图片作为参考,那是我并没有吃透的地方)

  • 方法:
  • assign(a, …b),把任意多个对象的可枚举属性拷贝给a,然后返回a
  • create(obj,attr)创建一个拥有指定原型和若干个指定属性的对象。
let a=Object.create(null,{
    name:{
        value:'lsq'
        },
    age:{
        value:23
    }
    })
console.log(a)
复制代码
  • defineProperties(obj, props):为obj对象新增或修改属性

  • defineProperties(obj, props):为obj对象新增或修改多个属性

    let a={name:'lsq'} Object.defineProperty(a,'friends',{value:'qd'}) Object.defineProperties(a,{ name:{value:'aaa'}, bbb:{value:'bbb'}}) console.log(a)

Function对象

  • 方法:apply,call,bind

Array对象

不改变原数组,返回新数组或值的方法:

  • concat,连接两个或多个数组

  • indexOf,搜索数组中的元素并返回所在的位置

  • lastIndexOf,从后往前搜索数组中的元素并返回所在位置

  • isArray,判断是否是数组对象

  • includes,判断数组是否包含一个元素

  • Join,把数组所有元素用字符串分开,转换为字符串

  • toString,数组转换为字符串并返回结果

  • slice,复制数组的片段,slice(0)复制该数组

  • valueOf,返回数组对象的原始值,就是返回该数组对象

  • find,返回符合条件的元素,只返回第一个

  • findIndex,返回符合条件元素的索引,只返回第一个

改变原数组的方法:

  • pop,删除数组最后一个元素返回删除的元素

  • push,向数组末尾添加一个或多个元素

  • shift,删除并返回数组的第一个元素

  • unshift,向数组开头添加一个或多个元素

  • splice,三个参数,开始位,删除项数,添加的元素,灵活控制

  • reverse,反转数组元素顺序

  • sort,升序排列数组

       sort排序的时候是按照字符编码排序,所以说sort是给字符串排序的,如果想给数字排序就需要传入排序的比较函数

let a=[123,28,13,29,9]
a.sort()
console.log(a)//[123, 13, 28, 29, 9]
a.sort(function(a,b){
 if (a < b) return -1
 else if (a > b) return 1
 else return 0
})
console.log(a)//[9, 13, 28, 29, 123]
复制代码
  • fill,用固定值填充数组

  • reduce,将数组减少为一个值

       reduce,接收两个参数,一是一个函数,二是传递给这个函数的初始值(这个初始值在使用的时候总觉得很鸡肋也没有用到过),这个函数可以有四个参数,前两个必须的参数是初始值与当前元素,可选的是当前索引和当前元素所属的数组对象。

       reduce函数还有一种遍历的感觉在里面,内部实现的时候应当是用到for循环了

     let a=[1,2,3,4]
    let c=  a.reduce(function(a,b){
          return a+b
      })
  console.log(c)//10
//相当于
      let a=[1,2,3,4]
      let b=0
     for(let i=0;i<a.length;i++){
         b+=a[i]
     }
     console.log(b)//10
复制代码

数组的迭代方法:

  • every(f),数组每个值都符合条件则返回true

  • Some(f),数组有值符合条件则返回true

  • Filter(f),返回所有符合条件的值组成的数组

  • Map(f),返回各项运行函数后返回值组成的数组

  • forEach(f),与for循环类似,占用内存少,无返回值

数组的其他方法:

  • Array.of(),将参数中所有值作为元素组成数组
  • Array.from(),将类数组对象或可迭代对象转化为数组
  • flat,嵌套数组转一维数组

数组的遍历方法:

  • entries,遍历键值对

  • keys,遍历键名

  • values,遍历键值

    arr=[1,2,3]
     for(let key of arr.keys()){
         console.log(key)//0,1,2
     }
     for(let value of arr.values()){
         console.log(value)//1,2,3
     }
     for(let[key,value] of arr.entries()){
         console.log(key,value)//0 1,1 2,2 3
     }
    复制代码

String对象

方法:

  • indexOf,查找字符串第一次出现的下标,没找到返回-1

  • lastIndexOf,查找字符串最后一次出现的下标,没找到返回-1

  • Trim,去除字符串首尾空格

  • toUpperCase,转大写

  • toLowerCase,转小写
  • concat,字符串拼接
  • slice,接收两个参数begin,end,截取begin-end间的字符,包括begin不包括end,begin不能大于end,参数为负值时会判断为length-该参数
  • substr,两个参数,begin,num,从begin开始截取num个字符
  • substring,与slice相似,不同在于当参数为负数时会忽略负号,begin大于end时会自动翻转参数
  • split,会将字符串拆分成由字符串组成的数组,返回数组,参数有两,第一个是必选,字符串或正则表达式,从该参数指定地方分割字符串,第二个可选,指定返回的数组的最大长度。
  • replace('a','b'),将字符串中第一个a转换为b,返回替换后的结果,如果需要全部替换可以用正则实现
  • charAt,返回在指定索引位置的字符
  • includes,是否包含
  • endsWith,是否以指定字符串或字符结尾
  • startWith,是否以指定字符串或字符开头
  • repeat,复制字符串指定次数并连接到一起返回

Boolean对象

布尔值的0表示false,1表示true

Number对象

方法:

  • toFixed,数字转换为字符串,保留指定位数的小数
  • isFinite,判断指定参数是否为无穷大
  • toString,数字转换为字符串
  • toPrecision,数字格式化为指定长度

Date对象

方法:

  • Date(),返回当日的日期和时间。
  • getDate(),从Date对象返回一个月中的某一天(1 ~ 31)。
  • getDay(),从Date对象返回一周中的某一天(0 ~ 6)。
  • getMonth(),从Date对象返回月份(0 ~ 11)。
  • getFullYear(),从Date对象以四位数字返回年份。
  • getHours(),返回Date对象的小时(0 ~ 23)。
  • getMinutes(),返回Date对象的分钟(0 ~ 59)。
  • getSeconds(),返回Date对象的秒数(0 ~ 59)。
  • getMilliseconds(),返回Date对象的毫秒(0 ~ 999)。
  • getTime(),返回1970年1月1日至今的毫秒数。
  • getTimezoneOffset(),返回本地时间与格林威治标准时间(GMT)的分钟差。
  • getUTCDate()根据世界时从Date对象返回月中的一天(1 ~ 31)。
  • parse(),返回1970年1月1日午夜到指定日期(字符串)的毫秒数。
  • setDate(),设置Date对象中月的某一天(1 ~ 31)。
  • setMonth(),设置Date对象中月份(0 ~ 11)。
  • setFullYear(),设置Date对象中的年份(四位数字)。
  • setHours(),设置Date对象中的小时(0 ~ 23)。
  • setMinutes(),设置Date对象中的分钟(0 ~ 59)。
  • setSeconds(),设置Date对象中的秒钟(0 ~ 59)。
  • setMilliseconds(),设置Date对象中的毫秒(0 ~ 999)。
  • setTime()以毫秒设置Date对象。
  • toString(),把Date对象转换为字符串。
  • toTimeString(),把Date对象的时间部分转换为字符串。
  • toDateString(),把Date对象的日期部分转换为字符串。
  • toLocaleString(),根据本地时间格式,把Date对象转换为字符串。
  • toLocaleTimeString(),根据本地时间格式,把Date对象的时间部分转换为字符串。
  • toLocaleDateString(),根据本地时间格式,把Date对象的日期部分转换为字符串。

RegExp正则对象

RegExp 对象方法

方法:

  • compile,编译正则表达式

  • exec,检索字符串中指定的值。返回找到的值,并确定其位置。

  • test,检索字符串中指定的值。返回true或false。

支持正则表达式的 String 对象的方法

方法:

  • search,检索与正则表达式相匹配的值。

  • match,找到一个或多个正则表达式的匹配。

  • replace,替换与正则表达式匹配的子串。

  • split,把字符串分割为字符串数组。

Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError,错误对象

  • Error是基类型,其他错误类型继承该类型,该类型错误少见如果有也是浏览器抛出,主要用于开发人员自定义错误

  • EvalError, 使用eval()函数时抛出的异常 

  • RangeError, 数值超出相应范围

  • ReferenceError,查询所有嵌套的作用域都找不到该变量 抛出该错误 

  • TypeError 对一个变量的值做不合理的操作时抛出该错误

ReferenceError是跟作用域判别失败有关 TypeError是作用域判别成功后对结果非法操作或者不合理

  • SyntaxError,语法错误抛出

  • URLError,错误地使用全局URI处理功能时抛出

宿主对象

浏览器中window对象以及其下边所有的子对象

更多查看(下)篇