第八章:常用对象和函数介绍
1. 理解call和apply
每个函数都有call和apply
可以用来重新定义函数执行的上下文环境,也就是this的指向。
<script type="text/javascript">
//脚本级变量,顶层的,属于window的
var name="小红";
var obj={
name:"小明",
}
function fun(s1,s2){
//表示当前对象的引用
console.log(this, this.name+"说:");
console.log(s1,s2);
}
//如果一个函数没有定义在类里,那么这个函数就是属于顶层的,顶层就是window
fun("哈哈","拉拉");
//fun.call(obj)第一个参数是一个对象,改变了fun函数的上下文,做到了,让fun函数变成了
//obj对象的方法了
fun.call(obj,"这是啥","好玩");
//apply和call一样,只是参数的调用方式,apply把参数看成是数组
fun.apply(obj,["这是啥","哈哈哈"]);
</script>
2. 日期对象
https://www.runoob.com/jsref/jsref-obj-date.html
<script type="text/javascript">
/*
var d = new Date();
var d = new Date(milliseconds);
var d = new Date(dateString);
var d = new Date(year, month, day, hours, minutes, seconds, milliseconds);
*/
console.log(t1);
var d1=new Date();//当前时间
console.log(d1.toDateString(),d1.toTimeString());
console.log(d1.toUTCString(),d1.toLocaleString());//UTC 格林威治时间
var t1= d1.getTime();//返回的是时间戳,1970-1-1 0:0:0 毫秒
var d2=new Date(t1);//用时间戳来生成日期对象
console.log(d2.toLocaleString()) ;
var d3=new Date("2014-1-15");//根据字符串来生成
console.log(d3.toLocaleString()) ;
var d4=new Date(2022, 1, 14, 18, 02);
console.log(d4.toLocaleString()) ;
//
var d1=new Date();//当前时间
var s=d1.getFullYear()+"年"+(d1.getMonth()+1)+"月"+d1.getDay()+" "
+d1.getHours()+":"+d1.getMinutes()+":"+d1.getSeconds();
console.log(s);
</script>
3.Math对象
https://www.runoob.com/jsref/jsref-obj-math.html
<script type="text/javascript">
//Math对象
console.log("平方根",Math.sqrt(16));
//floor 向下取整
console.log("floor取整",Math.floor(3.678));
//round
console.log("round取整",Math.round(3.678));
//保留2个小数点
console.log("保留2个小数点,",3.6789.toFixed(2));
//幂函数
console.log("幂函数,",Math.pow(3,3));
//随机数 Math.random() 0,1之间的数字
// (x,y] 随机整数 200<=x<300
var x=parseInt(Math.random()*(300-200)+200);
console.log("x=",x);
</script>
4.字符串对象常用方法
<script type="text/javascript">
//字符串对象
//1.长度
s1="abcde"
console.log("length",s1.length);
//2.大小写转换
console.log(s1.toUpperCase(),"ABC".toLowerCase());
//3.indexOf查找 从左开始,首次出现的位置 不存在-1
//lastIndexOf
s1="abcd123a123c";
console.log(s1.indexOf("123"),s1.lastIndexOf("123"));
//4.charAt(index) 返回index位置的字符
console.log(s1.charAt(2));
//5. substr 求子串 substring
s2=s1.substr(3,5);//从第三个取5个
s3=s1.substring(3,5);//从第三个取到第5个
console.log(s2,s3);
//5.replace替换1个 replaceAll全部
s1="aa,bb,cc,dd";
//默认只替换一个
console.log(s1.replaceAll(",","?"));
///
//字符串切割 split 返回的是数组
var arr=s1.split(",");
//josin拼接元素,是split反操作
console.log(arr.join(" "));
//匹配相关 startsWith已xx开头 endsWith(xx) 已xx结尾
s1="java高级开发";
console.log(s1.startsWith("java"),s1.endsWith("开发"));
//trim() 两边去除空白
s1=" 123 ";
console.log(s1.trim().length);
//slice()切片 功能类似求子串 substr,substring
s1="abcdefghijk";
console.log(s1.slice(4),s1.slice(0,5),s1.slice(5,10));
</script>
5.js中全局函数
https://www.runoob.com/jsref/jsref-obj-global.html
<script type="text/javascript">
//如果一个函数不在一个对象里,那就是全局的,就是window的
//decodeURI() 解码某个编码的 URI。
//encodeURI() 把字符串编码为 URI。
///home/list?name=张 三";
//需要对url进行编码
let url="home/list?name="+encodeURI("张 三");
console.log(url);
//home/list?name=%E5%BC%A0%20%E4%B8%89 解码
url='home/list?name=%E5%BC%A0%20%E4%B8%89';
console.log(decodeURI(url));
//eval(exp) 用来执行表达式
console.log(eval("1*2*3*4"));
//isNaN() 函数用于检查其参数是否是非数字值。
//如果参数值为 NaN 或字符串、对象、undefined等非数字值则返回 true, 否则返回 false。
console.log(isNaN("abc"),isNaN("12340"));
//parseInt() parseFloat() 类型转换
console.log(parseInt("123abc"),parseFloat("45.67.7"));
</script>