ECMASprict引用类型
Object
Object实例可以使用new +构造函数()创建;也可以使用对象字面量表示法。
访问对象属性可以使用点表示法.
;也可以使用[]
表示法,后者可以通过变量来访问属性
var object1 = new Object();var object2 = {name:'L'}; var key=name; object.name object[key]
Array
Array.length属性不是只读的,即可以通过改变数组元素改变length,也可以改变length,改变数组。
var arr=['a','b','c']; arr.length=2;console.log(arr);//['a','b']
Array的检测
console.log(typeof arr);//Objectconsole.log(arr instanceof Array);//trueconsole.log(arr instanceof Object);//trueconsole.log(Array.isArray(arr));//trueconsole.log(arr.constructor == Object);//falseconsole.log(arr.constructor == Array);//true
Array.join(c)返回有数组每个元素通过c拼接而成的字符串,如果没传入参数则默认以,
拼接。
var arr=['a','b','c']console.log(arr.join('|--|'));// a|--|b|--|c
数组作为栈使用(LIFO)
push()推入,添加数据直数组末尾;pop()弹出末尾数据数组作为队列使用(FIFO)
shift()出队列,获取数组首部元素;push()入队列,添加数据至数组末尾数组作为反向队列使用(FIFO,头部进入尾部出)
unshift入队列,添加数据至数组首部;pop()出队列,获取数组尾部元素重排序
reverse(),反转数组。
sort(),数组排序,可以传如函数指定排序规则。
var arr=[0,1,5,10,15] arr.sort(function(a,b){if(a < b) //如果返回负数,则说明第一个参数应该在第二个参数之前 return -1; else if(a == b)//如果返回0,则说明两个参数相等则 return 0; esle //如果返回正数,则说明第二个参数应该在第一个参数之前 return 1});console.log(arr);
concat(),接收一个或多个参数,先基于当前数组创建一个副本,如果参数是数组则每一项都添加到数组副本中,如果数不是数组则直接添加到数组副本中。
var arr=[1,2,3];var arr1=arr.concat(4,5,[6,7]);console.log(arr);//[ 1, 2, 3 ]console.log(arr1);//[ 1, 2, 3, 4, 5, 6, 7 ]
slice(start,end) 基于当前数组中的某几项创建一个新数组。satrt开始位置,end结束位置减一,如果未指定end,则默认为length
var arr=[1,2,3,4,5,6,7,8];console.log(arr.slice(1,4));//[2,3,4]console.log(arr.slice(1));//[2,3,4,5,6,7,8]
splice()
删除:删除任意数量的项,arguments[0]=删除的第一项位置,arguments[1]=删除的项数
var arr=[1,2,3,4,5,6,7,8]; arr.splice(2,4);console.log(arr);//[1,2,7,8]
插入(arguments[1]=0)|替换(arguments[1]=插入项数):插入任意数量的项,arguments[0]=起始位置,arguments[1]=删除的项数,arguments[2~]=插入项
var arr=[1,2,3,4,5,6,7,8]; arr.splice(2,3,'c','d','e'); console.log(arr);//从第二个位置开始删除3项(3,4,5)插入'c','d','e'。
位置方法
indexOf()从左至右 ; lastIndexOf()从右至左迭代方法
every(fn) 每一项执行fn,都返回true则返回true。
var arr=[1,2,3,4,5,6];var flag=arr.every(function(data){return data>3; })console.log(flag);//false
some(fn)每一项执行fn,任一项返回true则返回true
var arr=[1,2,3,4,5,6];var flag=arr.every(function(data){return data>3; })console.log(flag);//true
filter(fn) 每一项执行fn,返回true的项会组成数组并返回。-----
过滤
var arr=[1,2,3,4,5,6];var flag=arr.filter(function(data){return data>3; })console.log(flag);//[4,5,6]
forEach(fn) 每一项执行fn,无返回值。
map(fn) 每一项执行fn,返回函数调用的结果组成的数组。-----
整体操作
var arr=[1,2,3,4,5,6];var flag=arr.map(function(data){return data>3; })console.log(flag);//[ false, false, false, true, true, true ]
归并方法
reduce( fn )从数组第一项开始,向后遍历,reduceRight( fn )从数组最后一项开始,向前遍历。fn执行结果作为prev传入下次调用。如果数组仅有一项则直接返回。
arguments[0] = 前一个值prev
arguments[1] = 当前值cur
arguments[2] = 当前项索引index
arguments[3] = 数组对象 arr
var arr=[1,2,3,4,5,6];var sum=arr.reduce(function(prev,cur,index,arr){ return prev+cur;//第一次执行调用prev=arr[0],cur=arr[1];})console.log(sum);//21
Date类型
var data=new Date();
getTime(毫秒)、getFullYear(年)、getMonth(月,0表示1月)、getDate(日,1~31)、getDay(星期0,0表示星期一)、getHours(时)、getMinutes(分)、getSeconds(秒)Function类型
函数声明:function fn(){},解析器优先加载。
函数定义:var fn=function(){},执行到该行代码才解析加载。
函数名实际是指向函数对象的一个指针,不存在重载,后定义的覆盖先定义的
函数内部拥有arguments(保存参数)
和this(指向当前对象)
和caller(指向该函数的调用者)
,argumens
拥有一个callee
的属性指向拥有arguments
对象的函数。
function fn(num){ if(num<=1)return 1; return num*f(num-1);//高耦合}function fn(num){ if(num<=1)return 1; return num*arguments.callee(num-1); }var color='yellow';var c1={color:'red'};var c2={color:'blue'};function say(){console.log(this.color); } c1.say=say; c1.say();//redc2.say=say; c2.say();//bluesay();//yellowfuction out(){ inner(); }function inner(){console.log(arguments.callee.caller); } out()返回out的源代码
函数内部拥有两个属性lenght(希望接收参数个数)
和prototype
函数内部都有两个非继承的方法apply
和call
~在不同域中调用函数,等价于设置函数内部this值。接收两个参数第一个是环境执行域,第二个是参数。apply以数组传递,call逐个列举出来。
var color='yellow';var o={color:'red'};function say(){ var color='blue' console.log(this.color); } say()//yellowsay.call(this)//yellowsay.call(o)//red
bind函数可以绑定执行环境
var color='yellow';var o={color:'red'};function say(){ console.log(this.color); }var bindSay=say.bind(o); bindSay();//red而非yellow
基本包装类型String Number Boolean
每当创建一个基本类型值时,就会创建一个对应的包装类型值,提供一系列方法。仅存在于代码执行瞬间
var s='test'; s.name='t';console.log(s.name);//undefined//后台悄悄执行-->var s=new String('test'); s.name='t'; s=null;
常用String操作方法
var s='abcdefghijk'; s.charAt(1);//bs[1];//bs.charCodeAt(1)//98String.fromCharCode(98)//bvar s1=s.concat('l','m')//abcdefghijklmvar s1=s.slice(3);//"defghijk"var s1=s.substring(3);//"defghijk",结束位置=参数位置-1s.indexOf('a',i)//a的位置从位置i开始搜索,默认为0var s1=s.trim();//去除前后空格var s1=s.toUpperCase()//大写var s1=s.toLowerCase()//大写
Math|,全局域内置对象
Math.min(1,2,3,4)//1Math.max(1,2,3,4)//4Math.max.apply(Math,[1,2,3,4])//4以数组方式传入Math.random() 0<=x<1的随机数-->随机排序(给予一组对象随机值,按照随机值排序即可)
作者:我就是L
链接:https://www.jianshu.com/p/7bf059d76832
共同学习,写下你的评论
评论加载中...
作者其他优质文章