-
引用类型
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
J高三-第五章学习笔记
最新推荐文章于 2024-11-05 22:07:06 发布
本文深入探讨ES5的关键概念,包括引用类型如Object和Array的特性与操作,Date和RegExp的使用,Function的内部机制,以及Number和String等基本包装类型的功能。同时,文章详细解析了Math对象和Global对象提供的实用函数。
摘要由CSDN通过智能技术生成