内置对象
对象是属性和方法的集合。
js里面的内置对象有Array,Math,Date,String,setinterval,sertimeout。下面会一一介绍
Math对象
-
随机从0-1:random;Math.random();随机数范围在0-1之间。
-
向下取整:floor;例如:Math.floor(0.2);输出是0;
-
向上取整:ceil;例如:Math.ceil(0.2);输出是1;
-
四舍五入:round;
小于等于4的时候,舍去;例如:Math.round(4.4)输出是4;大于4的时候,进位Math.round(4.5)输出是5。 -
开方:sqrt;
1.一个参数时(参数是要进行开方的数,一个参数默认是开平方)例如:Math.sqrt(4);输出是2。
2.两个参数(第一个参数是要进行开方的数,第二个参数是开几次方)例如:Math.sqrt(16,4);输出是4。 -
次幂:pow;
有两个参数,第一个参数是底数,第二个参数是次幂,例如: Math.pow(2,3);输出是8。
值类型和引用类型
引用类型:对象(object),数组(Array),函数(Function)。占用空间不固定
值类型: 字符串(string),数值(number),布尔值(boolean),undefined,null(这五种基本数据类型是按值访问的,因为可以操作保存在变量中的实际的值)。不变的值,占用空间固定。
引用类型和值类型可以相互转化。
看下面代码:
var s1="cde";
var s1=new String(s1);//值类型转化为引用类型
s1.toString();//引用类型转化为值类型
String对象
String和字符串的用法一样
toString()可以将String转化为string(字符串),toString()在js中无参数
<script>
var s="abc";
console.log(typeof s);//输出是string(字符串类型)
var s1=new String("abc");//定义了一个String对象并且赋值为abc
console.log(s1);//输出String { "cde" }
console.log(typeof s1);//object
//String和字符串的用法一样
console.log(s1.charAt(1));
console.log(s.concat(s1));
console.log(s1.toString());
//toString()的重写 重写方法,方法名字一样但内容被重写
function a(){
a.toString=function(){//toString()的重写
console.log(20);
}
console.log(10);
}
a();
//值类型和引用类型的相互转化
// 值类型转化为引用类型
var s1="cde";
var s1=new String(s1);
console.log(typeof s1);
//引用类型转化为值类型
s1.toString();
console.log(s1);
</script>
日期对象Data
<script>
var time=new Date();//创建一个日期对象,自动获取当前日期和时间。
console.log(time);
console.log(time.toUTCString());//外国时间
console.log(time.toDateString());//年月日加星期
console.log(time.toISOString());//外国时间
console.log(time.toLocaleDateString());//年月日
console.log(time.toLocaleTimeString());//上午/下午+时分秒
console.log(time.toLocaleString());//将上面两个合并
console.log(time.toTimeString());中国标准时间(时分秒)
//时间的设置 获取
//1.直接在new的时候设置
字符串时间 和输出一样!!!
var times2=new Date("2019.8.10 12:00:00");
console.log(times2);
var times3=new Date(2019,8,10,12,0,0); //中间的月+1
console.log(times3);
//2.使用date中的方法设置
var time=new Date();
time.setFullYear(2021);//设置日期的年份。传入的年份指必须是4位数字
time.setDate(3);//设置日期月份中的天数。如果传入的值超过了该月中应有的天数,则增加
//月份。
time.setMonth(8);//设置日期的月份,其中0表示1月,11表示12月
time.setHours(13);//设置日期中的小时数,传入的值超过了23则增加月份中的天数
time.setMinutes(6);//设置日期中的分钟数,传入的值超过59则增加分钟数
time.setSeconds(20);//设置日期中的秒数。(0到59)
time.setMilliseconds(489);//设置日期中的毫秒数
console.log(time);
//通过方法来获取时间
console.log(time.getDate());//返回日期月份中的天数(0到31)
console.log(time.getDay());//返回日期中的星期几,(其中0表示星期日,6表示星期六)
console.log(time.getFullYear());//取得四位数当前的年份
console.log(time.getHours());//返回日期中的小时数(0到23)
console.log(time.getMilliseconds());//返回日期中的毫秒数
console.log(time.getMinutes());//返回日期中的分钟数(0到59)
console.log(time.getMonth());//返回日期中的月份(其中0表示1月,11表示12月)
console.log(time.getSeconds());//返回日期中的秒数(0到59)
console.log(time.getTime());//到1970年的总毫秒数
console.log(time.getYear());
</script>
计时器对象setTimeout 和setInterval
setTimeout()一次性计时器,延迟多长时间去执行
setInterval()循环计时器。这两个计时器时间可以设置,缺点:在网页被缩小或者切换选项卡之后计时器继续执行。
还有一个计时器window。requestAnimationFrame();
这个计时器的缺点是时间没办法设置,时间是根据电脑的刷新频率(16ms);
优点;在网页被缩小或者被切换选项卡之后计时器暂停
具体操作方法看下面的代码:
<script>
//一次性计时器
setTimeout(function(){
console.log(1)
},1000);//延迟1000ms
//将一次性计时器改成循环计时
function showtime(){
setTimeout(showtime,1000);
console.log(1);
}
showtime();
//循环计时器
var t=null;
t= setInterval(function(){
console.log(1)
},1000);
clearTimeout(t);
loop();
function loop(){
console.log(1);
setTimeout(function(){
window.requestAnimationFrame(loop);//一次性计时器可以设置时间,
//window.requestAnimationFrame在网页被缩小或者被切换选项卡之后计时器暂停,两个计时器相互弥补
},1000);
}
//只使用 window.requestAnimationFrame()延迟1000ms输出一次
function jishi(){
var times=new Date().getTime();
if(times-time>=1000){
console.log(1);
time=times;
}
window.requestAnimationFrame(jishi);
}
jishi();
</script>