内置对象
2019-02-15 本文已影响0人
大庆无疆
JavaScript的对象有三种:自定义对象、内置对象、浏览器对象
ECMAScript中的对象:自定义对象 、内置对象
内置对象也可以叫做全局对象
常用内置对象
1、Math对象
Math 是一个内置对象, 它具有与数学相关的属性和方法。不是一个构造函数。(是使用对象字面量的方式创建出来的,所以他的成员都为静态成员)
(1)Math.PI //圆周率
(2)Math.random() //生成[0,1)的随机数
(3)Math.floor()/Math.ceil() //向下取整/向上取整
(4)Math.round() //四舍五入(不简单)
(5)Math.abs() //绝对值(传入 null 将返回 0)
(6)Math.max()/Math.min() //求一组数的最大值/最小值(参数不是数组)
(7)Math.sin()/Math.cos() //正弦/余弦
(8)Math.pow()/Math.sqrt() //求指数次幂/求平方根
例子:
Math.pow(2,3) ; //8
Math.sqrt(9); // 3
2、Date对象
Date对象是一个构造函数,使用之前要先要new出实例对象才能调用Date中的实例成员
Date的构造函数有几种
new Date();
new Date(value); //毫秒值
new Date(dateString); //时间字符串
new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]);
获取当前时间的毫秒值
var date = new Date(); //创建Date对象
console.log(date.getTime()); //调用getTime()方法
快速获取当前时间的毫秒值
var num = + new Date(); // 利用+号将Date对象转为数值(+好在这里是取正的意思)
console.log(num);
格式化时间的例子使用
//写一个函数返回这个格式的时间(年-月-日 时:分:秒)
function formatDate(d) {
if(!(d instanceof Date)) {
console.error("您传入的对象不是一个Date对象,请确认后重新输入");
}
//获取年月日
var year = d.getFullYear(),
month = d.getMonth(),
date = d.getDate(),
//关于时间的单词后面都有s
hours = d.getHours(),
minutes = d.getMinutes(),
seconds = d.getSeconds();
//为了保证显示的结果都为两位数显示,判断小于10的值加个0
month = month < 10 ? '0' + month : month;
date = date < 10 ? '0' + date : date;
hours = hours < 10 ? '0' + hours : hours;
minutes = minutes < 10 ? '0' + minutes : minutes;
seconds = seconds < 10 ? '0' + seconds : seconds;
return year + '-' + month + '-' + date + ' ' + hours + ':' + minutes + ':' + seconds;
}
计算时间差
//计算时间差,返回相差的天,时,分,秒
/*思路:
1、两个date对象可以直接相减,返回的值是相差的毫秒值,其实在内部调用了两个对象的valueOf()方法
2、怎么计算相差的天呢?这是个数学问题
豪秒值/1000=秒数,秒数/60=分钟,分钟/60=小时,小时/24=天
相差的天数:毫秒值/1000/60/60/24
相差的小时数:毫秒值/1000/60/60%24
相差的分钟数:毫秒值/1000/60%60
相差的秒数:毫秒值/1000%60
3、我们需要返回多个值,所以可以想到返回一个函数,把需要返回的值放在函数的属性里,需要时就拿出来
*/
function timeInterval(start, end) { //传入的参数为Date对象
//判断输入的参数是否为Date对象,否则退出函数
if((!(start instanceof Date)) || (!(end instanceof Date))) {
console.error('你输入的参数不正确,请确认后重输');
return;
}
//计算时间相差的毫秒值
var millisecond = end - start;
//计算相差的天、小时、分钟、秒数
var day = Math.round(millisecond / 1000 / 60 / 60 / 24);
var hours = Math.round(millisecond / 1000 / 60 / 60 % 24);
var minutes = Math.round(millisecond / 1000 / 60 % 60);
var seconds = Math.round(millisecond / 1000 % 60);
return {
day: day,
hours: hours,
minutes: minutes,
seconds: seconds
}
}
3、数组对象
-
创建数组对象的方式:
(1)使用字面量创建
var arrays = []; //创建空数组对象
var arrays = [1,2,4]; //创建有元素的数组对象
(2)使用构造函数创建
var arrays = new Array(); //创建空数组对象
var arrays = new Array(2,5,3,1);
他们本质都一样,只是方式不同,一般使用(1)中的方法,因为比较简洁
-
判断一个变量是否为数组对象
// 1、使用 instanceof
var arr = [4];
function judgeArray(arr) {
if(!(arr instanceof Array)) {
console.log('不是数组');
return;
}else {
console.log('是数组');
}
}
judgeArray(arr);
// 2、使用Array的isArray()方法----》新增的方法
function judgeArray(arr) {
if(Array.isArray(arr)) {
console.log('是数组');
}else {
console.log('不是数组');
}
}
-
清空数组
var arrays = [3, 5, 2, 66, 2];
第一种(推荐)
arrays = [];
第二种
arrays.length = 0; //将长度设为0
第三种
arrays.splice(0, arrays.length); //利用splice()方法删除元素
-
数组常用方法
分类:
1、栈操作(先进后出)
push() 在数组后边追加内容,push方法里面可跟多个参数,方法返回值是数组的总长度
pop() 取出数组中的最后一项,相当于把最后一项从数组中移除,length属性会改变
var arrays = [3,4,5];
console.log(arrays);
arrays.push(6,7); 在数组后追加内容,此时数组的总长度为5
var last = arrays.pop(); 取出数组中的最后一个元素
console.log(last);
//--------------------------------------------------------------------
2、队列操作(先进先出)
push() 在数组后边追加内容,push方法里面可跟多个参数,方法返回值是数组的总长度
unshift() 在数组最前面插入内容,unshift()方法里面可跟多个参数,方法返回值是数组的总长度
shift() 取出数组中的第一个元素,相当于把第一个元素从数组中移除,length属性会改变
var arrays = [1,2,3];
arrays.push(4,5);
console.log(arrays);
arrays.unshift(-1,0);
console.log(arrays);
var first = arrays.shift();
console.log(arrays);
console.log(first);
//--------------------------------------------------------------------
3、排序方法
reverse() 翻转数组
sort() 从小到大排序
注意:他们都改变了原数组
var nums = [3,2,7,44,8,7]; //数字数组
var strs = ['sfs','fgc','weq','oi','d','a']; //字符串数组
//翻转数组
nums.reverse();
strs.reverse();
console.log(nums);
console.log(strs);
(1)sort()方法默认情况下(即不带参数)对字符编码(ASCII)进行排序,比较的时候会先比较每个元的第一位
,然后再比较第二位,然后...,所以9会比12大。
(2)通常情况下我们都会给sort()方法传入一个函数指定排序的规则
strs.sort();
nums.sort(function (a,b) { //这个sort()写了一个函数当做参数,指定数值之间的升序排序规则
return a - b; //升序排序
// return b - a; //降序排序
});
(拓展练习)根据字符串的长度来排序
var strArrays = ['asdf', 'ad', 'sdfdd', 'd']; //字符串数组
console.log(strArrays); //排序前['asdf', 'ad', 'sdfdd', 'd']
strArrays.sort(function (a, b) {
// return a.length - b.length; //升序排序
return b.length - a.length; //降序排序
});
console.log(strArrays);//排序后["sdfdd", "asdf", "ad", "d"]
-
操作方法
var arrs2 = ['heqing', 'jialing'];
1、 concat() 方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。
2、slice(start, end) 方法返回一个新的数组对象,这一对象是一个由 begin和 end(不包括end)决定的原数组的浅拷贝。原始数组不会被改变。
3、splice(删除的起始位置,删除的个数,添加的元素1,添加的元素1..)方法通过删除现有元素和/或添加新元素来修改数组,并以数组返回原数组中被修改的内容(直接修改数组内容);
4、indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。
console.log(arrs2.indexOf('heqing')); //输出0
5、join() 方法将一个数组的所有元素连接成一个字符串并返回这个字符串。元素之间的分隔符为join()的参数,默认为逗号。
console.log(arrs2.join('|')); //输出heqing|jialing。
(可选html5中的方法)
6、filter()方法
//在数组[20, 40,60,32,66]中,将大于40的数值删除掉
// 思路:使用filter()方法,他会返回一个新数组。传入的参数是一个函数。
var arrs = [20, 40,60,32,66];
var newArrs = arrs.filter(function (item) {
return item < 40; //保留小于40的值
});
console.log(newArrs); //输出[20, 33]