J高三-第五章学习笔记

本文深入探讨ES5的关键概念,包括引用类型如Object和Array的特性与操作,Date和RegExp的使用,Function的内部机制,以及Number和String等基本包装类型的功能。同时,文章详细解析了Math对象和Global对象提供的实用函数。
摘要由CSDN通过智能技术生成
  • 引用类型
    es5没有类,引用类型与类的概念类似但不完全一致
    new跟上一个构造函数创建对象

  • Object
    new和花括号两种方式构造,字面量不会调用Object构造函数
    key可以是数字,自动转字符串
    可以用中括号中放变量来取值

  • Array
    可以保存不同类型对象,长度自动调整
    创建数组:
    new Array() new Array(‘1’,‘2’) new Array(20)长度20的数组 可以省略new
    [] [1,2] [‘1’,‘2’] 不推荐[1,]会初始化成undefined,字面量不会调用Array构造函数
    length不是只读的设置值可以改数组长度,未初始化的默认为undefined,array[length]=x添加新元素
    用中括号和索引取值
    检测数组Array.isArray() 不用instanceof是因为Array可能被同名函数覆盖
    valueof()方法返回还是数组,alert(array.valueof())array.valueof()返回的数组会自动调用toString()
    toString()调用每个元素的toString()方法然后将结果用逗号连接
    toLocaleString()与toString()类似但调用的是元素的toLocaleString()方法
    join方法可以用其他字符串连接,如果是null或者undefined则返回空字符串

  • push末端添加元素,pop弹出移除元素
    unshift首端添加元素,shift首端移除元素
    栈:push pop
    队列:push shift

  • sort默认会将数组元素转为字符串比较,不能直接用来给数组排序!
    比较函数(x,y)=>{return 1或-1或0} 返回正数表示第一个参数应该在第二个后面,反之亦然
    比较数值可以简化:(x,y)=>{return y-x}表示升序,x-y可以表示降序

  • concat接受元素,数组或者两者的混合作为原数组的末尾元素,返回新数组

  • slice接受一个参数,返回从指定位置到数组末尾的新数组
    接受两个参数,返回指定位置区间(不包结尾元素)的新数组
    参数中有负数时加上要加上数组长度,开始位置小于结束位置则返回空数组

  • splice接受下标和从下标开始移除的元素数量,第三个开始的多个参数表示新添加的元素
    第二个参数为0则不移除元素,第三个或更多参数也可以不传则不添加元素
    新增:i,0,新元素1,新元素2…
    删除:i,n
    替换: i,n,新元素1,新元素2…

  • 查询元素 indexOf() lastIndexOf()用全等===查找元素位置,查不到返回-1

  • every some forEach filter map 接受的函数的参数为 item,index,array
    reduce reduceRight是prev,cur,index,array,默认prev是数组第一项
    求和 array.reduce(function(prev,cur,index,array){return prev+cur})
    求最值 array.reduce(function(prev,cur,index,array){return prev>cur?prev:cur})

  • Date
    存储UTC时间,从1970-01-01 00:00:00开始的毫秒数,精确保存从开始日期到之后28万年的日期
    构造Date对象:
    new Date(从开始日期到目标日期的毫秒数),为了方便后面毫秒数就是指这个毫秒时间差
    Date.parse()参数接受比较多的形式,如 2004-05025T00:00:00,返回毫秒数,转不了数字就返回NaN
    Date.UTC()也返回毫秒数,如 new Date(Date.UTC(2005,4,5,17,55,55))月份从0开始,省略参数默认为0
    new Date() 接受参数与Date.UTC()也可以一样,但是基于本地时而非GMT创建new Date(2005,4,5,17,55,55)
    Date.now()返回代码执行时的当前毫秒数,或者+new Date()也得到毫秒数
    toLocaleString返回字符串包含上下午,没有时区
    toString返回包含时区,小时一般是0-23
    valueOf()返回毫秒数,因此用不等号比较Date实例会自动调用valueOf()比较毫秒数
    toDateString toTimeString toLocaleDateString toLocaleTimeString 返回格式因浏览器而异
    toUTCString返回完整UTC日期,但也可能是英文月份和星期几

  • Date实例方法
    getFullYear 返回四位数年份 setFullYear接受四位数
    getMonth 返回年份,0表示1月,11表示12月 getMonth接受0,超过11增加年份
    getDate 返回日期1到31 比较特殊!setDate接受超过该月应有天数并增加月份
    getHours 返回小时数0到23 setHours接受超过23并增加天数
    getMinutes 返回分钟0到59 getMinutes接受超过59并增加小时数
    getSeconds 返回秒数0到59 getSeconds接受超过59并增加分钟数
    总结:年固定4位,其他都可以超过范围自动进位,月份正常最大11,小时是23,分秒是59
    日期date不固定1到31最为特殊,其他都是从0开始计数,日期从1开始计数

  • getTime 返回日期毫秒数 setTime
    getMilliSeconds 日期中的毫秒数 setMilliSeconds
    getDay 返回周几,0是周日,6是周六

  • RegExp
    字面量: /pattern/flags
    flags:
    g全局模式,发现第一个匹配项是否停止
    i忽略大小写
    m多行,到达行尾是否查找下一行
    元字符本身要用反斜杠转移: ()[]{}^$|?*+.
    RegExp构造: new RegExp("…", “gim”) 元字符双重转义\变为\ /\w\hello\123/ “\w\\hello\\123”
    es5中明确规定正则字面量跟RegExp构造函数创建的实例不能共用
    RegExp实例属性:
    global,ignoreCase,multiline对应flags是否设置
    lastIndex开始搜索下一个匹配项的字符位置,source返回正则的字面量字符串
    RegExp实例方法:
    exec(字符串)无匹配项返回null,有匹配项返回Array的实例,额外带index表示匹配项位置和input表示入参字符串
    数组第一项是与整个模式匹配的字符串,其他项是与模式中的捕获组匹配的字符串
    exec不设置全局标志g,执行多次也只会返回一个匹配项,设置全局标志可以多次执行继续查找
    test(字符串) 正则与字符串匹配返回true否则false
    RegExp构造函数属性:
    input入参 lastMatch匹配项 multiline全局标志 leftContext rightContext 左右上下文
    lastParen 最近一次捕获组

  • Function
    var func = new Function(“a”,“b”, “return a+b”) 表明函数也是对象,函数名是指针
    把函数赋值给另一个变量,实际是复制了函数指针,两个都指向函数
    函数没有重载,两次命名函数,实际是变量名的覆盖
    解析器先读取函数声明,函数表达式要等到对应代码执行才会真正被解释执行
    除了什么时候可以通过变量访问函数,函数表达式和函数声明的语法是等价的
    函数可以作为值传递,例如根据属性名返回对应的比较函数来排序
    函数内部属性:
    arguments是数组实例,还有callee字段指向拥有这个arguments对象的函数
    在函数内部使用arguments.callee获取函数本身指针,好处是即使函数名被改了,也不会出错
    this指向函数执行环境,全局环境默认是window
    函数作为一个对象的方法,那么this就指向对象本身,全局环境定义的函数,不管是函数式还是表达式,都指向全局环境
    把一个全局环境的函数复制给一个对象,那么函数内部的this也会动态指向这个对象,在全局环境直接调用函数this指向全局环境
    arguments.callee.caller或者函数名.caller都可以指向调用当前函数的函数
    arguments.caller严格模式访问报错,非严格模式返回undefined
    严格模式不能为函数的caller属性赋值否则报错
    每个函数都有两个非继承的方法apply和call,apply接受运行函数作用域和参数数组(可以是arguments)
    call接受运行函数作用域和每一个参数
    严格模式下this不会自动转型为window,默认是undefined
    函数名.call([this|window|obj], 参数1,参数2)动态扩充作用域,解开对象和方法的耦合
    函数的bind方法接受作用域显式绑定作用域对象,IE9+

  • 基本包装类型
    Boolean Number String
    var s1 = ‘aaa’;
    s1.substring(2);
    基本类型不是对象,但是第二行代码执行时将其包装为String实例并调用方法,然后又销毁了实例
    直接调用Boolean Number String方法可以得到包装类实例,用new生成的对象typeof会返回object
    Object函数接受字符串数字布尔的字面量返回对应包装实例 instanceof操作对应包装类型返回true

  • Boolean
    valueOf()返回基本类型
    引用类型和基本类型区别:
    typeof falseObj //object
    falseObj instanceof Boolean//true
    typeof falseValue//boolean
    falseValue instanceof Boolean//false
    总结:typeof返回值不同,一个是对象一个是基本类型,instanceof针对引用类型测试是否为实例

  • Number
    valueOf()返回基本类型
    toFixed(n)四舍五入保留几位小数
    toExponential()指数表示法
    toPrecision(n)精确到哪一位

  • String
    length属性表示字符个数
    charAr(n)取字符,或者中括号加下标取字符
    charCodeAt(n)取字符编码
    String.fromCharCode(字符编码) 返回字符串
    concat(str1,str2…)字符串拼接,用加号拼接速度慢早在ie7就解决了
    slice(开始位置,结束位置) 传负值会加上字符串长度
    substring(开始位置,结束位置) 传负值转为0
    substr(开始位置,字符个数) 第一个参数传负值加上字符串长度,第二个传负值转为0
    indexOf(子字符串[,开始位置]) 查询子串位置,查询范围是指定位置到length-1
    lastIndexOf(子字符串[,开始位置]) 从开始位置反向遍历查询子串位置,查询范围是0到开始位置
    trim()返回去除前后空格的新字符串 trimLeft() trimRight()
    toLowerCase() toUperCase()大小写转换
    match(正则表达式或正则对象) 返回结果与正则对象的exec一样,数组第一项是匹配项其他是捕获组,index是位置
    search(正则表达式或正则对象) 返回匹配到的索引,无匹配项返回-1
    replace(正则表达式或正则对象或字符串,替换字符串)全部替换要带全局标志g
    或者 replace(正则表达式或正则对象或字符串,function(match,pos,originalText){return xxx})
    根据匹配项和匹配项位置以及原始字符串来返回替换的内容
    split(正则或字符串,返回数组最大长度)分割字符串
    localeConpare(被比较的字符串)区域化地字符串比较

  • Global对象
    兜底儿对象,不输属于其他对象就属于Global对象
    isNaN() isFinite() parseInt() parseFloat()
    encodeURI(字符串) 字符串编码防止浏览器不识别
    encodeURIComponent(字符串) 对任何非标准字符如冒号正斜杠问号和井字号进行编码
    解码: decodeURI decodeURIComponent
    escape和unescape已废弃,只支持ASCII的字符,不支持所有Unicode字符
    所有的原生引用类型的构造函数都是Global的属性
    获取Global对象引用: var global = function(){return this;}();

  • Math
    Math属性,打点访问:
    Math.E自然对数的底数
    LN10 10的自然底数
    LN2 2的自然底数
    LOG2E 以2为底e的对数
    LOG10E 以10为底e的对数
    PI π的值
    SQRT1_2 1/2的平方根
    SQRT2 2的平方根
    min() max()接受多个参数 Math.max.apply(Math, array)返回最大值
    ceil()向下舍入的整数
    floor()向上舍入的整数
    round()标注舍入
    random() 返回(0,1)区间的小数,注意不含0和1
    random用法1区间随机数: random()区间长度 + 区间最小值
    random用法2区间随机整数[a,b]包含ab的整数: Math.floor(random()
    (b-a+1) + a)
    abs exp自然指数的幂 log自然对数 pow幂函数 sqrt算术平方根
    sin cos tan asin acos asin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值