es6 语法
到此灬一游丿 人气:1/---字符串---/ let str="string" str.includes("c")) //判断字符串是否包含“c”,是返回true,否者返回false str.startWith("str") //判断字符串是否以“str”开头,是返回true,否者返回false str.endWith("ng") //判断字符串是否以“ng”结尾 str.repeat(2) //字符串复制两次 ,返回“stringstring” '1'.padStart(2 ,'0') //字符串从头开始补全 长度为2 ,以 '0 '补全, 返回 “01” ‘1’.padEnd(2 ,'0') //字符串以尾开始补全 长度为2 ,以‘0’补全,返回‘10’ String.raw`Hi\n${1+2}` //阻止正则表达式进行转义 /---数字---/ Number.isInteger(25) //判断这个是否是一个整数 Number.isSafeInteger(10) //判断这个数是不是在一个安全范围 Number.MAX_SAFE_INTEGER 数字最大的安全范围 Number.MIN_SAFE_INTEGER 数字最小的安全范围 //数字取整 Math.trunc(4.1)//返回‘4’ Math.trunc(4.9)//返回‘4’ //判断是否是正负数 Math.sign(-5)//返回-1 Math.sign(0)//返回0 Math.sign(5)//返回1 Math.sign("-50")//返回-1 Math,sign("sdfs")//返回NaN 不是一个数字 /---map和array的对比---/ let map=new Map(); let array=[]; //增 map.set('t',1) array.push({t:1}) //查 map.has('t'); array.find(item=>item.t) //改 map.set('t',2) array.forEach(item=>item.t?item.t=2:"") //删 map.delete('t') let index=array.findIndex(item=>item.t) array.splice(index,1) /---set和array的对比---/ let set=new Set(); let array=[]; //增 set.add({t:1}) array.push({t:1}) //查 set.has({t:1}) array.find(item=>item.t) //改 set.forEach(item=>item.t?item.t=2:"") array.forEach(item=>item.t?item.t=2:"") //删 set.forEach(item=>item.t?set.delete(item):'') let index=array.findIndex(item=>item.t) array.splice(index,1) /---map,set,object对比---/ let item={t:1} let map=new Map() let set=new Set() let obj={} //增 map.set('t',1) set.add(item) obj['t']=1 //查 console.info( map.has('t') set,has(item) 't' in obj ) //改 map.set('t',2) item.t=2 obj['t']=2 //删 map.delete('t') set.delete(item) delete obj['t'] /---Proxy用法---/ let obj={ time:'2017-03-11', name:'net', _r:123 } let monitor =new Proxy(obj,{ //拦截对象属性的获取 get(target,key){ return target[key].replace('2017','2019') //把2017改成2019 }, //拦截对象设置属性 set(target,key,value){ if(key==='name'){ return target[key]=value; }else{ return target[key]; } }, //拦截key in object操作 has(target,key){ if(key==="name"){ return target[key] }else{ return false } }, //拦截delete deleteProperty(target,key){ it(key.indexOf('_'){ delete target[key]; return true; }else{ return target[key]; } }, //拦截object.key,object.getOwnPropertySymbols,object.getOwnPropertyNames ownKeys(target){ return Object.keys(target).filter(item=>item!='time') } }); console.log(monitor.time) //monitor属性的获取,这个返回2019-03-11 monitor.time='2018' //monitor属性的修改,这个没有修改,被拦截了 monitor.name='finghi' //monitor属性的修改,设置成功 console.log('name' in monitor ,'time' in monitor) //返回 true false delete monitor.time; //monitor属性的删除,没有成功,被拦截了 delete monitor._r; //monitor属性的删除,成功 console.log(Object.keys(monitor));//time被拦截了 返回name _r , /---Reflect---/ //Reflect和上面的proxy用法一样,但不需要new { let obj={ time:'2017-03-11', name:'net', _r:123 } console.log(Reflect.get(obj,'time')) //返回2017-03-11 Reflect.set(obj,'name','www'); //设置name属性 console.log(Reflect.has(obj,'name')) //返回true } /---Proxy和Reflect的经典应用场景---/ function validator(targer,validator){ return Proxy(target,{ _val=validator, set(target,key,value,proxy){ if(target.hasOwnProperty(key)){ let va=this._val[key] if(!!va(value)){ return Peflect.set(target,key,value,proxy) }else{ throw Error(`不能设置${key}到${value}`) } }else{ throw Error(`${key}不存在`) } } }) } const personValidators={ name(val){ return typeof val==='string' } age(val){ return typeof val==='number' && val>18 } mobile(val){ return typeof val==='number' } } class Person{ constructor(name,age){ this.name=name; this.age=age; this.modile=123456789 return validator(this,personValidators) } } const person =new Person('lilei',30) console.info(preson); person.name="Han mei mei" console.info(person);
加载全部内容