常用的内置对象
Math
1).Math
- Math.abs()
-Math.abs(x): 返回x的绝对值
-console.log(Math.abs(“1”)); 1
-console.log(Math.abs(-1)); 1
-console.log(Math.abs(“你好”)); NaN
-console.log(Math.abs(undefined)); NaN
-console.log(Math.abs()); NaN
-console.log(Math.abs(null)); 0 - Math.PI = π Math.E = e;
3.Math.ceil(x) 向上取整 Math.floor(x) 向下取整 Math.round()四舍五入 Math.round(1.5)返回2,Math.round(-1.5)返回-1
4.Math.max(x,y,z,k,…) 找出一组数中的最大数
Math.min(x,y,z,k,…) 找出一组数中的最小数
Math.pow(x,y) 求x的y次幂
Math.sqrt(x) 求x的平方根
!!
5.Math.random() 返回一个浮点数,伪随机数(0~1)之间
Date
2).Date: 实例用来处理日期和时间,Date对象基于1970年1月1日(世界标准时间)起的毫秒数
Date是一个构造函数,需要创造对象去用它
Date的构造函数:
new Date();
new Date(value); 1970年经过value毫秒后到达什么时间
new Date(dateString);
new Date(year[,month[,day[,hour[minutes[,毫秒]]]]]);
案例1:
var date = new Date();
console.log(date()); 输出当前时间
案例2:
var date = new Date(“2019-04-03”); 传入时间
console.log(date());
1.Date.now(); 获得1970年到现在的毫秒数
对象名.valueOf 获得1970年到现在的毫秒数
var date = +new Date() 获得1970年到现在的毫秒数
对象名.getTime() 获得1970年到现在的毫秒数
2.打包日期对象
function gettime() {
var date = new Date();
var year = date.getFullYear();
var month = parseInt(date.getMonth())+1;
var day = date.getDate();
var hour = date.getHours();
var minute = date.getMinutes();
var second = date.getSeconds();
month = month<10? ("0"+month):month;
day = day<10? ("0"+day):day ;
minute = minute<10? ("0"+minute):minute;
second = second<10? ("0"+second):second;
return year+"年"+month+"月"+day+"日 "+hour+":"+minute+":"+second;
}
console.log(gettime());
String
3)String js中不管单引号还是双引号都是字符串类型,没有单一的字符类型
string ------->字符串类型------>基本类型
String ------->字符串类型------>引用类型
String------>是一个对象
注意:
1.字符串可以看成是字符组成的数组,js中没有字符类型
2.字符是一个一个的,在别的语言中用一对单引号括起来
3.在js中字符串可以用单引号也可以用双引号
4.因为字符串可以看成数组 ,所以可以通过for循环遍历
var str = new String();
str = "hello";
for(var i = 0; i < str.length;i++) {
console.log(str[i]);
}
5.字符串的特性:不可变性,字符串的值是不能修改的
案例1:
var str = new String();
str = "hello";
str[2] = o;
for(var i = 0; i < str.length;i++) {
输出的值还是hello,字符串可以通过索引访问字符串中的某个值,但是只能访问,不能修改
console.log(str[i]);
}
案例2:
var str = new String();
str = "hello";
str = "你好"
console(str);
输出值是你好,但不是替换掉了hello,而是新的字符串在堆中声明了一个新的空间,将新的空间地址赋值给了str替换掉了str里面原本存储的地址
String一些常用的方法:
1.str.charAt(index) 方法从一个字符串中返回指定的字符。
str.charCodeAt(index) 方法从一个字符串中返回指定的字符的ASCII值。
str[index] 方法从一个字符串中返回指定的字符。
字符串中的字符从左向右索引,第一个字符的索引值为 0,最后一个字符(假设该字符位于字符串 stringName 中)的索引值为 stringName.length - 1。 如果指定的 index 值超出了该范围,则返回一个空字符串。
2.静态 String.fromCharCode() 方法返回由指定的UTF-16代码单元序列创建的字符串。
注意:静态方法可以直接用 构造函数.方法名(参数1,参数2,…) 调用,而动态方法必须创建一个对象后,用对象调用
语法: String.fromCharCode(num1, …, numN) 该方法返回一个字符串,而不是一个 String 对象。
案例1:
console.log(String.fromCharCode(97,98,99,100));
输出abcd
3.concat 字符串连接
案例1:
var str = "你好";
console.log(str.concat("我也好"));
//输出 你好我也好
4.indexOf() 寻找指定的字符串,找到第一个匹配的返回索引,没有则返回-1
语法:
str.indexOf(字符串);
案例:
var str = "helolo"; console.log(str.indexOf("o")); 结果为3
str.indexOf(字符串,起始寻找位置);
案例:
var str = "helolo"; console.log(str.indexOf("o",4)); 结果为5
lastIndexOf 和indexOf基本一样,不同点就是lastIndexOf是从后边往前找,但是返回的索引还是从前往后数的
5.replace(参数1,参数2) 用参数2的值替换参数1的值
案例:
var str = "你好,我也好";
str = str.indexOf("你")!= -1? str.replace("你","他"):"你好我也好";
console.log(str);
-
slice(start,end) start和end 都是数字类型,提取字符串中索引从start位置开始end前一个字符结束中的字符串,并返回这个字符串
案例:var str = “你好,我也好”;
var srr = str.slice(1,3);
console.log(srr); 输出 好,
7.split 切割字符串
语法:
split(x(以x字符分割字符串) 切割字符串并返回一个数组
案例:
var str = "你好,我也好,那就真的好";
var srr = str.split(",");
for(var i in srr) {
console.log((srr)[i]); 返回 你好 我也好 那就真的好
}
split(x(以x字符分割字符串),y(切割后留下y个新字符串))
案例:
var str = "你好,我也好,那就真的好";
var srr = str.split(",",2);
for(var i in srr) {
console.log((srr)[i]); 返回 你好 我也好
}
8.substr() 截取字符串
语法:
str.substr(x) 从x位置开始截取到最后的,返回新的字符串
案例:
var str = "你好,我也好,那就真的好";
str = str.substr(7);
console.log(str); 返回 那就真的好
str.substr(x,y) 从x位置向后截取y个元素,返回截取的字符串
案例:
var str = "你好,我也好,那就真的好";
str = str.substr(7,3);
console.log(str); 返回 那就真
substring(x,y) 从x位置开始截取到y前一个位置为止,和slice一样唯一不同是它不接受负值
var str = “你好,我也好,那就真的好”;
str = str.substring(7,8);
console.log(str); 返回 那
注意: substring(x,y) 和 substring(y,x)截取的字符一样
9.toLocaleLowerCase() toLowerCase() 大写转小写
toLocaleUperCase toUpperCase 小写转大写
- trim() 清除字符串两端的空格
trimLeft() 清除字符串左端的空格
trimRight() 清除字符串右端的空格
Array
4)Array 数组
1.isArray(x) 判断x是不是数组 是静态方法
arr instanceof Array: 也可以用来判断是否为数组
2.concat(x,y,z,…) 方法使用于合并两个或多个数组,此方法不会改变现有数组,而是返回一个新数组
案例1
var str = [1,2,2,3];
var str1 = ['a','b','c'];
var str2 = str.concat(str1);
console.log(str); 输出 1,2,2,3
console.log(str2); 输出 1,2,2,3,a,b,c
3.every(函数)----返回值类型是布尔类型,函数作为参数使用,这个函数中有三个参数,第一个参数是元素的值
第二个参数是索引值,第三个参数是原来的数组(没用)
如果这个数组中的值都符合条件才返回true,否则返回false
var str = [1,2,2,3];
console.log(str.every(function(ele,index){ 返回true
return ele<=3;
}));
-
filter(function(currentValue,index,arr){})-----返回值一个数组和every的作用差不多,用来筛选元素,把符合筛选条件的元素组成一个新数组返回,currentValue为当前的元素值,index为数组当前的索引,arr为数组对象本身
案例:var str = [1,2,2,3];
var str2 = str.filter(function(ele,index){
return ele>=3;
});
console.log(str2); 输出 3 -
push(x) 在数组的末尾添加x,返回新数组的长度
unshift(x) 在数组前部添加x, 返回新数组的长度 -
pop() 删除数组最后一个元素,并返回被删除的这个元素
shift() 删除数组的第一个元素,并返回被删除的这个元素
7.forEach(函数(元素,索引,被遍历的数组)) 遍历数组内的元素
案例
var str = [1,2,2,3];
str.forEach(function(ele,index) {
console.log(ele+"===="+index);
});
返回1===0
2===1
2===2
3===3
8.indexOf(元素值) 返回数组里面该元素的下标,没有找到元素则返回-1
9.join(“字符串x”);返回一个字符串,先在数组每个元素后面添加字符串x,注意最后一个元素不添加,然后连接这些元素最后返回连接后的字符串
10.map(函数) 数组中的每一个元素都要执行这个函数,把执行后的结果重新的全部放在一个新的数组中
案例
var str = [1,2,2,3];
var str1 = str.map(function(ele,index) {
str[index]+=1;
return str[index];
});
console.log(str1);
11.reverse() 反转数组里面的元素位置
案例
var str = [1,2,2,3];
str.reverse();
console.log(str); 输出 3 2 2 1
12.sort() 排序数组里面的元素,并返回字符串,sort排序不一定是稳定的,默认排序方式是根据字符串Unicode码
案例1
var str = [1,1,100,40];
str.sort();
console.log(str); 返回 1 1 100 40
案例2
var str = [1,1,100,40];
str.sort(function(b,a){
if(a>b) {
return 1;
}
else if(a==b) {
return 0;
}
else {
return -1;
}
});
console.log(str); 返回 1 1 40 100
a,b里面一开始放的是数组的第一个和第二个,循环一遍后是二个和第三个
13.slice(x(开始的索引),y(结束的索引)) 截取数组元素并用这些元素创建新数组,从索引x位置开始,到y位置前一个数结束
案例
var str = [60,50,1,100,40];
var str1 = str.slice(3,5);
console.log(str1); 返回 100 40
14.splice(数组索引x,要删除元素的个数y,要插入的内容z)— x为数组的索引,执行删除/插入/替换开始位置,x的值大于数组索引最大值时,插入元素直接插入在数组最后一个,不删除元素,y代表要删除的个数,从x位置开始向后删除y个元素,z是插入的内容
案例1
var array = [1,2,3,4,5];
array.splice(1,1);
console.log(array); 返回 1 3 4 5
案例2
var array = [1,2,3,4,5];
array.splice(1,1,3);
console.log(array); 返回 1 3 3 4 5
案例3
var array = [1,2,3,4,5];
array.splice(1,0,3);
console.log(array); 返回 1 3 2 3 4 5
15.some(function(currentValue,index,arr){}) 查找数组中是否有满足条件的元素,currentValue为当前的元素值,index为数组当前的索引,arr为数组对象本身,返回值为boolean类型,在数组中只要找到满足条件的元素就会终止函数并返回true,没找到则返回false
16. .includes(item) 判断数组中是否含有item元素,如果有则返回true,如果没有则返回false
Object
1.Object.keys(obj) obj为传入的对象,该方法主要是获得obj里面所有的属性名和方法名,以数组的方式返回
案例1
var people = {
name: "ss",
age: "s",
say: ()=>{
console.log("aa");
}
}
console.log(Object.keys(people));
2.Object.defineProperty(obj,prop,descriptor);
参数1 obj : 传入的是你要修改的对象名
参数2 prop: 传入的是你要修改的属性名/方法名
参数3 descriptor: 以对象的形式书写
{
var people = {
name: “ss”,
age: “s”,
say: ()=>{
console.log(“aa”);
}
}
value: 设置属性的值,如果是新增属性默认为underfined
例:
Object.defineProperty(people,“hello”,{});
console.log(people.hello); 输出underfined;
writable: 设置值是否可以被重写, true|false,默认为false,值不可以被修改
例:
Object.defineProperty(people,“name”,{writable: false});
people.name = “aa”;
console.log(people.name); 输出为ss
enumerable: 目标属性是否可以被遍历出来 true|false 默认为false
例:
Object.defineProperty(people,“name”,{enumerable: false});
console.log(Object.keys(people)); 输出[“age”,“say”]
configurable: 目标属性是否可以被删除或者是否可以再次修改特性true|false 默认为false
例:
Object.defineProperty(people,“name”,{configurable: false});
delete peopel.name;
console.log(peopel.name); 输出ss
Object.defineProperty(people,“name”,{value: 500, configurable: true}); 报错
}