引用类型,也叫对象定义,描述一类对象所具有的属性和方法。
大多数引用类型的值都是Object类型的实例。
创建Object实例方法
1、new Object
2、var person = { ... }
Array类型
1、new Array(3)
2、var color = [‘red’,’blue’,’green’]
3、转换方法:toLocaleString()、toString、valueOf()
4、栈方法:push()、pop() 尾部插入、删除数据
5、队列方法:shift(),unshift 前面插入、删除数据
6、重新排序方法:arr.sort(selfDefienCompareFunc) selfDefienCompareFunc(nextVal, currentVal) {return (nextVal - currentVal)} // 升序排,降序则返回currentVal-nextVal
7、操作方法:concat()、slice(start,end)【end可省略,表示到结尾】、splice()【删除splice(startindex, length),插入splice(startIndex,length,insertParams),替换splice(startIndex,length,insertparams1,insertparams2...)】
8、位置方法:indexOf()、lastIndexOf
9、迭代方法:every()、filter()、forEach()、map()、some()
10、归并方法:reduce()、reduceRight(),从左、右迭代,并最终返回新的值,如,sum = [1,2,3,4,5].reduce((pre,cur,index,arr) => {return pre+cur}),alert(sum) // 15
Date类型
1、Date.parse()、Date.UTC()——返回毫秒时间戳,接收参数不同
2、继承的方法:toLocaleString()、toString、valueOf()
3、格式化日期:toDateString()、toTimeString()、toLocaleDateString()、toLocaleTimeString()、toUTCString()
4、日期/时间组件方法:getTime()、getFullYear()。。。
RegExp类型
正则表达式:var exoression =/pattern/ flags // pattern表简单或复杂的正则表达式,flag有g【全局】、i【不区分大小写】、m【多行模式】
如,/at/g 【匹配at】、/[bc]at/i【匹配bat或cat,不区分大小写】、/.at/gi【匹配at结尾的3个字符的组合,不区分大小写】
正则中存在元字符必须转义,包括: ([{\^$|)?*+.]}
如,匹配bat或cat,不区分大小写/[bc]at/I => /\[bc\]at/i 匹配at结尾的3个字符的组合,不区分大小写/.at/gi => /\.at/gi
RegExp另外创建方式:var re = new RegExp(‘\\[bc\\]at’, “i"),需要对字符串进行双重转义。 re.test(‘cat’) // true
1、RegExp实例属性: var pattern1 = /\[bc]at/i;
global:布尔值,是否设置g标识,如,pattern1.global // false
ignoreCase:布尔值,是否设置I标识,如, pattern1.ignoreCase //true
lastIndex:整数,标识开始搜索下一个匹配项的字符位置,从0开始,如,pattern1.lastIndex // 0
multiline:布尔值,表示是否设置了m标识,如,pattern1.multiline // false
source:正则表达式的字符串表示,按照字面量形式而非传入构造函数,如,pattern1.source // “\[bc]at”
2、RegExp实例方法
exec(param), param表示被匹配的字符串,返回数组
exec设置全局标识(g),则每次返回依次遍历到的匹配项,如果没有(g),则每次只返回第一个匹配项值
test(param),匹配则返回true,否则返回false,pattern1.test(text)
toLocaleString():返回正则表达式的字面量
toString():返回正则表达式的字面量
3、RegExp构造函数属性
var text = ’this has been a short summer’;
var pattern = /(.)hort/g;
input $_ 最近一次要匹配的字符串,RegExp.input // this has been a short summer RegExp["$_"]
lastMatch $& 最近一次的匹配项,RegExp.lastMatch // short RegExp[“$&"]
lastParen $+ 最近一次匹配的捕获组,RegExp.lastParen // s RegExp[“$+"]
leftContent $` input字符串中lastMatch之前的文本,// this has benn a RegExp[“$`"]
multiline $* 布尔值,表示是否所有表达式都使用多行模式 // false RegExp[“$*"]
rightContent $’ input字符串中lastMarch之后的文本 // summer RegExp[“$’"]
4、局限性,不支持高级正则表达式
Function类型 —— 函数时对象,函数名是指针
函数定义的三种方式
function sum(a,b) { return a + b } // 函数声明
var sum = function(a,b) {return a + b}; // 函数表达式
var sum = Function(“a”,”b”,”return a + b”); // 构造函数,最后一个参数被当做函数体,不推荐
1、没有重载——后面函数覆盖前面函数
2、函数声明与函数表达式——解析器函数声明时,有一个函数声明提升的过程,读取并将函数声明添加到执行环境中,表函数达式在执行到函数所在语句之前,变量都不会保存对函数的引用
3、作为值的函数 function callSomeFunction(someFunction, someArgs) { return someFunction(someArgs) }
4、函数内部对象,
arguments:保存函数参数,其中有属性callee,是一个指针,指向拥有arguments对象的函数,严格模式下不可用,默认undefined
例如,递归调用时,function factorial(num){if(num<=1){return -1;} else {return num*arguments.callee(num-1)}} // 等同于factorial*(num-1)
this:引用执行环境对象
caller:保存了调用当前函数的函数的引用。
例如,function outer(){inner()} function inner(){alert(inner.caller);} outer() // inner.caller指向outer,建议使用arguments.callee.caller
5、函数属性和方法
length:函数希望接收的命名参数的个数
prototype:保存函数所有实例方法
toString()
toLocaleString()
valueOf()
apply(作用域,传入参数) // 传入参数需为arguments对象or数组
// 如,function sum(d1, d2) {return d1+d2}
// function applySum1(d1,d2) {return sum.apply(this, arguments);}
/ function applySum2(d1,d2) {return sum.apply(this, [d1,d2]);}
call(作用域,传入参数) // 传入参数需为单个参数,逐个列举
// 如, function callSum(d1,d2) {return sum.call(this, d1, d2);}
// 严格模式下,未指定环境对象而调用函数,this值不会转型为window,除非明确把函数添加到某个对象或调用apply or call,否则this将是undefined
// apply、call的真正用途——扩充作用域
bind() 创建函数的实例,bind(param) param作为参数传递给函数。
基本包装类型
Boolean、String、Number
创建类型实例 => 实例调用指定方法 => 销毁实例
new 调用基本包装类与直接调用同名函数不同,如, Number(‘25’) // number类型,和new Number(‘25’) // object类型
1、Boolean —— 不建议使用
重写valueOf返回基本类型true或false
重写toString,返回基本类型true或false
new Boolean(false) && true => true ,原因,new Boolean是falseObject,对象类型转型之后为true
基本类型typeOf返回true或false,object类型返回object
2、Number
valueOf、toLocaleString、toString重写
toFixed()保留几位小数,如var num=10.005; alert(num.toFixed(2)) // 10.00
toExponential() 格式化数值,返回以指数表示法(也称e表示法)表示数值的字符串形式。 var num=10; alert(10.toExponential(1)) // “1.0e+1”
toPrecision() 返回固定大小(fixed)格式,也可能返回(exponential)格式,具体看哪个格式合适。
如,var num=99,alert(num.toPrecision(1)) // “1e+2”,即100,alert(num.toPrecision(2)) //“99”,alert(num.toPrecision(3)) // “99.0"
3、String
charAt
charCodeAt
concat
slice
substr
substring
indexOf
lastIndexOf
trim
toLowerCase
toLocaleLowerCase
toUpperCase
toLocaleUpperCase
match // 同RegExp的exec,返回数组
search // 返回第一个匹配项索引
replace // 传入两个参数,ori,new,用new替换ori,ori可以是字符串也可以是正则,new可以是字符串也可以是函数
htmlEscape 转义4个字符,<、>、&、""
split 分隔字符串并输出数组传入一个参数,可以是字符也可以是正则表达式
localeCompare 比较两个字符串
var val=“yellow”;
alert(val.localeCompare(“brick”)) // 1
alert(val.localeCompare(“yellow”)) // 0
alert(val.localeCompare(“zoo”)) // -1
fromCharCode 字符编码型
HTML方法:格式化HTML的需求。。。
单体内置对象
1、global 不属于任何对象的属性和方法最终都是global的属性和方法。isNaN()、isFinete()、parseInt()、paeseFloat()
URI编码:对URI(Uniform Resource Identifiers,通用资源识别码)进行编码,以便发送给浏览器
encodeURI:主要用于整个URI,不会对本身属于URI的特殊字符(冒号、正斜杠、问号、井字号)进行编码。
encodeURIComponent:主要用于URI中的某一段,对任何非标准字符全部编码
decodeURI:对encodeURI的编码进行解码
decodeURIComponent:对encodeURIComponent的编码进行解码
eval()方法:一个ECMAScript解析器,只接收一个参数,就是需要执行的ECMAScript字符串代码。eval执行的代码拥有与eval同样的执行环境和作用域链。严格模式不适用
Global对象的属性:undefined、NaN、Infinity、Object、Array、Function、Boolean、String、Number、Date、RegExp、Error、EvalError...
window对象:ECMAScript虽然没有明确指出如何直接访问Global对象,但web浏览器都是将这个全局对象作为window对象一部分加以实现。因此,全局作用域中所有变量和属性也就成了window对象的属性。
2、Math对象
Math对象的属性
Math.E // 自然对数底数,e的值
Math.LN10 // 10的自然对数
Math.LN2 // 2的自然对数
Math.LOG2E // 2为底e的对数
Math.LOG10E // 10为底e的对数
Math.PI // π的值
Math.SQRT1_2 // 1/2的平方根(即2的平方根的倒数)
Math.SQRT2 // 2的平方根
min()和Max()方法,Math.max.apply(Math, arrs)
舍入方法:
ceil() // 向上舍入
floor() // 向下舍入
round() // 标准舍入
random方法:返回介于0~1之间的随机数
其他方法:
abs(num) // 绝对值
exp(num) // Math.E的num次幂
log(num) // num的自然对数
pow(num,power) // num的power次幂
sqrt(num) // num的平方根
acos(x) // x的反余弦值
asin(x) // x的正弦值
atan(x) // x的反正切值
atan2(y,x) // y/x的反正切值
cos(x) // x的余弦值
sin(x) // x的正弦值
tan(x) // x的正切值