内置对象
js中的三种对象:
1.内置对象-----js系统自带的对象
2.自定义对象-----自己定义的构造函数创建的对象
3.浏览器对象---BOM中
内置对象:
Math
Date
String
Array
Object
验证是不是对象的方式:console.log(Array instanceof Object);
Math对象
MDN----JavaScript在线帮助文档
实例对象:通过构造方法创建出来,实例化的对象
静态对象:不需要创建,直接就是一个对象,方法(静态方法)直接通过这个对象调用即可
实例方法必须通过实例对象调用
静态方法必须通过大写的对象调用
Math.PI----π---
Math.E----常数的底数
Math.abs(值)-----绝对值
Math.ceil(值)----向上取整
Math.floor(值)---向下取整
Math.random()-----随机数[0,1)
产生1到100的随机数: console.log(parseInt(Math.random()*100)+1);
//例子:自己定义一个对象,实现系统的max的方法
function Max(){
this.getMax=function () {
var max=arguments[0];
for(var i=1;i<arguments.length;i++){
if(max<arguments[i])
max=arguments[i];
}
return max;
};
}
var obj=new Max();
console.log(obj.getMax(12,34,23,13));
//随机产生一个十六进制的颜色值
function getColor() {
var array=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"];
var str="#";
for(var i=0;i<6;i++){
str += array[parseInt(Math.random() * 16)];
}
return str;
}
console.log(getColor());
Date对象
1.创建Date实例的方法(常用)
var dt=new Date();
var dt=new Date("2019/03.23");//传入字符串类型的参数
var dt=new Date();
console.log(dt);//当前时间,服务器的时间
console.log(dt);
var dt=new Date("2017/08/12");//Sat Aug 12 2017 00:00:00 GMT+0800 (中国标准时间)
var dt = new Date();
获取年份
console.log(dt.getFullYear());
获取月份
console.log(dt.getMonth()+1);//是0开始的 真实的月份是需要加1的
获取日期
console.log(dt.getDate());
获取小时
console.log(dt.getHours());
获取分钟
console.log(dt.getMinutes());
获取秒
console.log(dt.getSeconds());
获取星期
console.log(dt.getDay());//星期从0开始的(0就是星期日)
console.log(dt.valueOf());//毫秒数
console.log(dt.toDateString());//Thu Feb 06 2020
console.log(dt.toString());//Thu Feb 06 2020 15:58:33 GMT+0800 (中国标准时间)
console.log(dt.toLocaleDateString());//2020/2/6
console.log(dt.toTimeString());//15:58:33 GMT+0800 (中国标准时间)
console.log(dt.toLocaleTimeString());//下午3:58:33
var dt=Date.now();
console.log(dt);//返回自 1970-1-1 00:00:00 UTC(世界标准时间)至今所经过的毫秒数
案例:格式化后的指定格式的日期和时间---封装一个函数
/**
* 格式化时间
* @returns {string}
*/
function getDate(dt) {
var dt = new Date();
var year = dt.getFullYear();
var month = dt.getMonth() + 1;
var day = dt.getDate();
var hour = dt.getHours();
var minute = dt.getMinutes();
var second = dt.getSeconds();
month = month < 10 ? "0" + month : month;
day = day < 10 ? "0" + day : day;
hour = hour < 10 ? "0" + hour : hour;
minute = minute < 10 ? "0" + minute : minute;
second = second < 10 ? "0" + second : second;
return year+"年"+month+"月"+day+"日"+hour+":"+minute+":"+second;
}
console.log(getDate(new Date()));
var dt=new Date();
console.log(dt.valueOf());
var dt2=new Date(dt.valueOf());//毫秒数转Date对象
console.log(dt2);
String对象
1.字符串可以看成是字符组成的数组,可以通过for循环进行遍历,但是js中没有字符类型
var str="枕头里藏着一个梦,梦里面住着无法拥抱的人";
for(var i=0;i<str.length;i++){
console.log(str[i]);
}
2.在js中字符串可以使用单引号也可以使用双引号
3.字符串特性:不可变性,字符串的值是不可改变的,改变的只是引用的地址
var str="枕头里藏着一个梦,梦里面住着无法拥抱的人";
console.log(str[3]);//藏
str[3]="ta";
console.log(str);//枕头里藏着一个梦,梦里面住着无法拥抱的人
str="可惜不是你";
console.log(str);//可惜不是你
4.string------>字符串类型------基本类型
String------>字符串类型------引用类型
5.String 对象的方法
实例方法:必须通过new的方式创建的对象来调用方法
静态方法:直接通过大写的构造函数的名字调用的方法(直接通过大写的对象名字调用的方法)
字符串常用的属性:
.length----->字符串长度
.charAt(index)---->返回指定索引位置的字符串,超出索引,结果是空字符串
.indexOf(要找的字符串,从哪个位置开始找的索引)------>返回这个字符串最开始出现的索引值,没找到则返回-1
.concat()------>返回的是拼接之后的新的字符串
String.fromCharCode(数字值,可以是多个参数)------>返回的是ASCII码对应的值
.lastIndexOf(要找的字符串);------->返回该字符串最后一次出现的索引,没找到则返回-1
.replace("原来的字符串","新的字符串");用来替换字符串的
.slice(开始的索引,结束的索引); 从开始索引的位置开始提取,到结束索引的前一个结束,如果只有一个参数,则会从这个参数开始一直提取到字符串末尾
.split("分隔符",限定返回的分割片段数量)----->切割字符串,返回的是一个字符串数组
.substr(开始的位置,个数);返回的是截取后的新的字符串
.substring(开始的索引,结束的索引),返回截取后的字符串,不包含结束的索引的字符串
.toLowerCase();转小写
.toUpperCase();转大写
.trim();干掉字符串两端的空格
如果想知道这个对象中有没有sex这个属性,只要把对象["属性名字"]--->放在if的判断中即可----判断对象中有没有这个属性;if的判断的结果是true,则有这个属性,否则没有这个属性
案例:
var str="枕头里藏着一个梦,梦里面住着无法拥抱的人";
console.log(str.charAt(100));//" "
console.log(str.length);//20
console.log(String.fromCharCode(23,34));//"
console.log(str.concat("真的吗","好吧"));//枕头里藏着一个梦,梦里面住着无法拥抱的人真的吗好吧
console.log(str.indexOf("一个"));//5
console.log(str.replace("梦","人"));//枕头里藏着一个人,梦里面住着无法拥抱的人
console.log(str.slice(3,8));//藏着一个梦
var arry=str.split("一个")//
for(var i=0;i<arry.length;i++){
console.log(arry[i]);//枕头里藏着 //梦,梦里面住着无法拥抱的人
}
console.log(str.substr(2,4));//里藏着一
console.log(str.substring(2,4));//里藏
str=" weGFH ";
console.log(str.toLowerCase());//wegfh
console.log(str.toUpperCase());//WEGFH
console.log(str.trim());//weGFH
案例3:找到这个字符串中每个字符出现了多少次
var str3 = "whatOareYyouYnoYshaHleiHoHmyHgod";
//第一步:把所有的字母全部变成小写
str3 = str3.toLocaleLowerCase();
//第二步:创建一个空对象,目的:把字母作为键,次数作为值
var obj = {};
//第三步,遍历字符串,获取每个字母
for (var i = 0; i < str3.length; i++) {
//判断obj这个对象中有没有这个字母(字母---键)
var key = str3[i];//每个字母
if (obj[key]) {//判断obj中有没有这个键
//对象中有这个字母了
obj[key]++;
} else {
//对象中没有这个字母,那就把字母加到对象中,并且给这个字母一个出现的次数,默认1次
obj[key] = 1;
}
}
//遍历对象,显示每个字母的次数
for(var key in obj){
console.log(key+"这个字母出现了"+obj[key]+"次");
}
Array对象
Array对象的方法:
1.Array.isArray(值);----->如果值是 Array,则为true; 否则为false。
2.instanceof关键字也可以判断该变量是不是Array类型的
var obj=new Array();
console.log(Array.isArray(obj));//true
console.log(obj instanceof Array);//true
3..concat() 方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。
var num1=[1,2,3],num2=[4,5,6],num3=[7,8,9];
console.log(num1.concat(num2,num3));//(9) [1, 2, 3, 4, 5, 6, 7, 8, 9]
4..every(callback[回调函数]) 方法测试一个数组内的所有元素是否都能通过某个指定函数的测试【return的条件】。它返回一个布尔值。 【callback用来测试每个元素的函数,它可以接收三个参数:element用于测试的当前值。index可选,用于测试的当前值的索引。array可选,调用 every 的当前数组。】
var arr=["小明明lkko","小曹操674","小白白bd","笑眯眯a"];
var flag=arr.every(function (ele,index) {
//数组中的每个元素的长度是不是大于4
return ele.length>4;
});
console.log(flag);//flase
5..filter(callback) 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。【callback用来测试数组的每个元素的函数。返回 true 表示该元素通过测试,保留该元素,false 则不保留。它接受以下三个参数:element用于测试的当前值。index可选,用于测试的当前值的索引。array可选,调用filter的当前数组。】
var array=[12,0,23,4,0,45];
var flag=array.filter(function (element) {
return element!=0;
});
console.log(flag);//(4) [12, 23, 4, 45]
6..push() 方法将一个或多个元素添加到数组的末尾,并返回该数组的新长度。
var array=[12,12,3,4,5,5,5];
var length=array.push(23,45);
console.log(length);//9
console.log(array);//(9) [12, 12, 3, 4, 5, 5, 5, 23, 45]
7..pop()方法从数组中删除最后一个元素,并返回该元素的值。此方法更改数组的长度。
var array=[12,12,3,4,5,5,5];
console.log(array.pop());//5
console.log(array);//(6) [12, 12, 3, 4, 5, 5]
8..shift() 方法从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。从数组中删除的元素; 如果数组为空则返回undefined 。
var array=[12,12,3,4,5,5,5];
console.log(array.shift());//12
console.log(array);//(6) [12, 3, 4, 5, 5, 5]
9..unshift() 方法将一个或多个元素添加到数组的开头,并返回该数组的新长度(该方法修改原有数组)。
var array=[12,12,3,4,5,5,5];
console.log(array.unshift(12,45));//9
console.log(array);//(9) [12, 45, 12, 12, 3, 4, 5, 5, 5]
10..forEach(callback) 方法对数组的每个元素执行一次提供的函数。【为数组中每个元素执行的函数,该函数接收三个参数:currentValue数组中正在处理的当前元素。index 可选,数组中正在处理的当前元素的索引。array 可选,forEach() 方法正在操作的数组。】
var array=[12,23,34];
var result=array.forEach(function (element,index) {
console.log(element+"========"+index);
}) //12========0
//23========1
//34========2
11..indexOf(要查找的元素,从第几个索引开始)方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1
12..lastIndexOf() 方法返回指定元素(也即有效的 JavaScript 值或变量)在数组中的最后一个的索引,如果不存在则返回 -1。从数组的后面向前查找
13..join(separator ) 方法将一个数组(或一个类数组对象)的所有元素连接成一个字符串并返回这个字符串 【指定一个字符串来分隔数组的每个元素。如果需要,将分隔符转换为字符串。如果缺省该值,数组元素用逗号(,)分隔。如果separator是空字符串(""),则所有元素之间都没有任何字符。】
var a = ['Wind', 'Rain', 'Fire'];
var myVar1 = a.join(); // myVar1的值变为"Wind,Rain,Fire"
var myVar2 = a.join(', '); // myVar2的值变为"Wind, Rain, Fire"
var myVar3 = a.join(' + '); // myVar3的值变为"Wind + Rain + Fire"
var myVar4 = a.join(''); // myVar4的值变为"WindRainFire"
14..map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后并返回结果,返回一个新数组。
var numbers = [1, 4, 9];
var doubles = numbers.map(function(num) {
return num * 2;
});
// doubles数组的值为: [2, 8, 18]
// numbers数组未被修改: [1, 4, 9]
15..reverse() 方法将数组中元素的位置颠倒,并返回该数组。数组的第一个元素会变成最后一个,数组的最后一个元素变成第一个。该方法会改变原数组。
const array1 = ['one', 'two', 'three'];
console.log('array1:', array1);
// expected output: "array1:" Array ["one", "two", "three"]
const reversed = array1.reverse();
console.log('reversed:', reversed);
// expected output: "reversed:" Array ["three", "two", "one"]
// Careful: reverse is destructive -- it changes the original array.
console.log('array1:', array1);
// expected output: "array1:" Array ["three", "two", "one"]
16..sort(compareFunction) 方法用原地算法对数组的元素进行排序,并返回数组----->可能不稳定,如果不稳定,请写MDN中的那个固定的代码
var array=[12,2,3,4,3,22,6,323,43];
var result=array.sort(function (a,b) {
if(a>b)
return 1;
if(a==b)
return 0;
else
return -1;
})
console.log(result);//(9) [2, 3, 3, 4, 6, 12, 22, 43, 323]
17..slice(开始的索引,结束的索引);把截取的数组的值放在一个新的数组中,但是不包含结束的索引对应的元素值
var arr=[10,20,30,40,50,60,70,80,90,100];
var newArr= arr.slice(3,7);
console.log(newArr);//(4) [40, 50, 60, 70]
18..splice(开始的位置,要删除的个数,替换的元素的值);一般是用于删除数组中的元素,或者是替换元素,或者是插入元素,此方法会改变原数组.
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
var removed = myFish.splice(2, 0, 'drum', 'guitar');
// 运算后的 myFish: ["angel", "clown", "drum", "guitar", "mandarin", "sturgeon"]
var myFish = ['angel', 'clown', 'drum', 'sturgeon'];
var removed = myFish.splice(2, 1, "trumpet");
// 运算后的 myFish: ["angel", "clown", "trumpet", "sturgeon"]
// 被删除的元素: ["drum"]