Say little, do much
javascript 常用方法
2019/09/25

JS

JSON.parse(r)     //解析为JSON字符串,构造由字符串描述的JavaScript值或对象。

location.reload(); //刷新页面

history.go(-1);  //返回上一页

self.location=document.referrer;  //返回上一页并刷新

encodeURIComponent(string); //把字符串作为URI组件进行编码二进制

decodeURIComponent(string); //可进行解码

encodeURI(string);   //把字符串作为URI组件进行编码二进制

decodeURI(string); //可进行解码

parseInt(str); //取整数

str=str.toUpperCase();  //字符串转换为大写

str=str.toLowerCase(); //字符串转换为小写

break; //直接跳出所有循环

continue; //跳出一次循环

Math.random() //随机数

setAttribute 设置标签自定义属性 getAttribute 获取标签自定义属性

arr.concat() //不会修改原数组,连接两个或多个数组,多个数组用逗号分隔

instanceof //运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性。      a instanceof b

// 1.只保留整数部分(丢弃小数部分)

parseInt(5.1234);// 5

// 2.向下取整(<= 该数值的最大整数)和parseInt()一样

Math.floor(5.1234);// 5

// 3.向上取整(有小数,整数就+1)

Math.ceil(5.1234);

// 4.四舍五入(小数部分)

Math.round(5.1234);// 5

Math.round(5.6789);// 6

// 5.绝对值

Math.abs(-1);// 1

// 6.返回两者中的较大值

Math.max(1,2);// 2

// 7.返回两者中的较小值

Math.min(1,2);// 1

// 随机数(0-1)

Math.random();

js停止冒泡window.event? window.event.cancelBubble = true : e.stopPropagation();

js阻止默认行为window.event? window.event.returnValue = false : e.preventDefault();

var array={"a":"1","b":"2","c":"3"}

for(var key in array){

console.log(array[key]);

}

var array=["a","b","c"]

for(var key in array){

console.log(array[key]);

}

console.log("日志信息");

console.info("一般信息");

console.debug("调试信息");

console.warn("警告提示");

console.error("错误提示");

console.log('%c有颜色的输出信息', 'color:white; background-color:#0055CC');//格式输出

setTimeout(fun,0) //默认是4ms  伪线程

//-------------------------------------

var timer;

var i=0x100000;

function func() {

timer = setTimeout(func, 0);

$("div").css("backgroundColor","#"+i.toString(16));}

if (i++ == 0xFFFFFF) {clearInterval(timer);}

timer = setTimeout(func, 0);

//-------------------------------------

经过我的实测,不会卡死很流畅。

其中的缘由要讲一下setTimeout(fuc,0);的原理。

setTimeout的最小延迟时间为4ms也就意味这即使我们写0,在执行setTimeout(fuc,0);的时候也会自动编译成setTimeout(fuc,4);

所以相当于每隔4ms执行一次。效果就是setTimeout(f,0)必须要等到当前脚本的所有同步任务结束后才会执行。

setTimeout(function(){

func1();

},0)

func2();

//在上面这段代码中func2先执行,func1后执行,0s延迟表示回调函数将插队到一个能立即执行的时段

//如果不写0,浏览器自动配置时间,多为10-100ms,所以还是func2先执行,func1后执行

因为JavaScript是单线程的,较大的程序容易出现阻塞。

setTimeout可以处理这一问题,它可以把较大的程序分成多个片,插入到执行队列中,在不同的时段执行。

换言之,就是把其它执行块穿插到大程序内部,实现了伪多线程。

函数库Concurrent.Thread.js是实现JavaScript多线程的。

下载并引入该库后,

Concurrent.Thread.create( code block 1 );

code block 2;

代码块1不论多大,都不影响代码块2的执行。

数组

array.pop() //删除数组最后一个元素

array.splice(5,1) //删除数组中索引为5的,删除一个,数组长度会改变

var newArr = arr1.concat(arr2); //两个数组拼接成新数组

var newarr = array.slice(0,5) //截取array数组从0至5之间的数组

var arr=[1,2,3]; arr.indexOf(1)//0 查找数组内是否有匹配的 如果有就返回数组内的索引 没有返回-1

arr.unshift(1); //在数组前添加数据

arr.map((item,index)=>{return item}); //遍历数组,item是数组的每一个值,index是下标索引,returm是修改的值

[7,5,3,6,9,546].sort((a,b)=>{return a-b;}) //升序排序 1,2,3

[7,5,3,6,9,546].sort((a,b)=>{return b-a;}) //降序排序 3,2,1

["dsds","fdds","vffd","tretre"].sort() //["dsds", "fdds", "trete", "vfggfd"]

sort():方法用于对数组的元素进行排序(排序改变的是原有的数组不生成副本),如果没有使用参数,将按字母排序(Ascall编码)对数组的元素进行排序,准确点是按照字符编码的顺序进行排序,要仅需升序或者降序需要提供比较函数

字符串操作

"1,2,3,4,5,6".split(",") //按照逗号分隔成数组

"123456".substring(1,3)   //23   从位置1开始截取 截取至位置3前面一个字符  截取个数为 3-1=2

"123456".slice(1,3)           //23   从位置1开始截取 截取至位置3前面一个字符  截取个数为 3-1=2

// "123456".slice(1) 从位置1开始截取,截取到最后

"123546".substr(1,3)         // 235   从位置1开始截取  截取三个字符

"arr".unshift(3) //从数组头部插入

"arr".push(1) //从数组尾部插入

let str = JSON.stringify({"aa":"11"}) //序列化成 一个JSON 字符串的值 字符串类型

var aa = '{"aa":1}'; aa = JSON.parse(aa);   //解析为JSON字符串

["牛逼1","牛逼2","牛逼3"].join(",") // 牛逼1,牛逼2,牛逼3   将数组的所有元素添加到字符串中

'1,2,3,4,5,6,7'.split(",") //将字符串已逗号形式分隔为数组

"adf".charAt(2) //f

"adf".charAt("d") //1

数组操作

对象操作

delete obj[key] //删除对象

for (key in obj){} //遍历对象 key为对象下标

伪类操作更改样式

document.styleSheets[0].insertRule( '.site-page--login::before{background-image:url("1.png")}',0)

window.location.host; //获取域名和端口 如果有端口就获取端口 没有就没有端口

进制转换

parseInt('16',16) //16进制转换为10进制

parseInt('8',8) //8进制转换为10进制

parseInt('2',2) //2进制转换为10进制

num.toString(16); //参数可以是2,8,16.  本例是将num转成16进制数据

时间操作 date

new Date().getTime() //获取当前时间的毫秒

new Date().toLocaleString() // "2019/4/4 下午2:04:42"

new Date(str) //转为date对象

str:

1554355486494 时间戳

"2019-04-04 18:00:59" //日期格式

"2019-04-04" //日期 转为的date对象的时间是 8点

滚动条

1、让滚动条滑动到最底部

div.scrollTop=div.scrollHeight;

const typedArray1 = new Int8Array(6);

typedArray1[0] = 10;

typedArray1[1] = 11;

for (let item of typedArray1) {

console.log(item);

}

Array.from()

es6

合并对象

let age = {age: 15};

let name = {name: "Amy"};

let person = {...age, ...name};

person;  //{age: 15, name: "Amy"}


发表评论

Powered By © 奇迹云   备案号:粤ICP备17082613号

本站部分资源来源于互联网网友交流,只供网络测试和学习交流所用、所有版权归原权利人,如有关资源侵犯了你的权益,请联系告之,我们将于第一时间删除!

用户名:

密码:

邮箱:

*
*
*