数据在内存中的表现
1.基本类型在内存中的存储
var str1 = 'xg';
var str2 = str1;
//把str1的值给str2,重新开辟一块空间给str2
str1 = 'tttt';
//str1再怎么改也不会影响到str2的值
document.write(str1 + '<br>'); //tttt
document.write(str2); //xg
(2)复杂类型在内存中的存储
修改p1时,也会修改p2的属性
(3)基本类型作为函数的参数
存放在栈区
(4)复杂类型作为函数参数
内置对象
Array、Boolean、Date、Math、RegExp、String、Number、Functions、Events
1.Array对象
(1)检测一个对象是否是数组
(1).1instanceof
有缺陷,因为数组、数字·····都是对象
var arr = ['小范', '小耿'];
var a = 1;
document.write(arr instanceof Array); //true
document.write(a instanceof Array); //false
document.write(arr instanceof Object); //true
//有缺陷,因为数组、数字·····都是对象
(1).2Array.isArray( )
有唯一性,最常用
var arr = ['小范', '小耿'];
var a = 1;
document.write(Array.isArray(arr)); //true
document.write(Array.isArray(a)); //false
(2)数组名.toString()
将数组转换成字符串
(3)数组名.valueOf()
返回数组本身
(4)数组名.join('分隔符')
将数组转换成字符串,并用分割符进行分割
(5)数组名.push('其他参数')
接收任意数量的参数,将它们添加到数组的末尾,最后返回数组的个数
(6)数组名.pop()
删除数组最后一项,然后返回删除的那一项
(7)数组名.shift()
删除数组的第一项,然后返回删除的那一项;如果本身数组为空,则返回undefined
(8)数组名.unshift('其他参数')
接收任意数量的参数,将它们添加到数组的开头,最后返回数组的个数
var arr = ['小范', '小耿'];
document.write(arr.toString()); //将数组转换成字符串
document.write(arr.valueOf()); //返回数组本身
//document.write(arr.join('-'));
//将数组转换成字符串,并用分割符进行分割
document.write(arr.push('love','hahah')); //输出4
document.write(arr.pop()); //输出hahah
document.write(arr.shift()); //输出小范
document.write(arr.unshift('啦啦啦啦', 'kekekek'));
//输出4
(9)数组名.reverse()
将数组反转,原数组也反转了
var arr = [1,2,3,4];
document.write(arr.reverse()); //4,,3,2,1
(10)数组名.concat(数组名, 数组名)
合并多个数组;在没有给concat添加参数时,它只会复制当前数组并返回
var arr = [1,2,3,4];
var arr1 = [5,6,7,8];
var arr2 =[9,10,11,12];
document.write(arr.concat(arr1, arr2));//合并多个数组
(11)数组名.indexOf(要找的元素,从这个下标开始找)
正着找
(12)数组名.lastIndexOf(要找的元素,从这个下标开始找)
倒着找
var arr = [1,2,3,4,3];
document.write(arr.indexOf(3,0)); //2
/*从下标为0的元素(包括这个元素)开始找3,
第一个3的下标为2,所以返回2*/
document.write(arr.indexOf(3,3)); //4
/*从下标为3的元素(包括这个元素)开始找3,
第一个3的下标为4,所以返回4*/
document.write(arr.lastIndexOf(3));
//4,返回字符串最后一次出现的位置
document.write(arr.lastIndexOf(3,0)); //-1
/*从下标为0的元素(包括这个元素)开始倒着找3,
找不到所以返回-1*/
(12)遍历数组数组名.forEach()
var arr = [1,2,3,4,3];
arr.forEach(function (value, index, array) {
document.write(value +'<br>' ); //数组的值
document.write(index +'<br>'); //数组的下标
document.write(array +'<br>'); //数组本身
})
(13)数组排序数组名.sort()
(13).1 数组名.sort()
用于对数组元素进行排序,默认是按照字符编码的顺序进行升序排序
var arr = [10,20,5,1000,50];
document.write(arr.sort()); //10,1000,20,5,50
//先比较第一个数字,若相同再比较第二个数字
var arr1 = ['10', '20', '5', '1000', '50'];
document.write(arr1.sort()); //10,1000,20,5,50
//先比较第一个数字,若相同再比较第二个数字
(13).2 数组名.sort(函数)
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字,比较函数应具有两个参数a和b,其返回值如下:
①a<b,返回一个小于0的值
②a=b,返回0
③a>b,返回一个大于0的值
var arr = [10,20,5,1000,50];
document.write(arr.sort(function (a, b) {
return a -b; //升序
//return b - a; //降序
}));
//5,10,20,50,1000
sort()的内部排序和冒泡排序一样。
(14) 数组名.map(函数)
会按照你的规则得到一个新的数组,不满足规则的元素直接返回false
。而且必须要有return
值,如果没有就会返回undefined
。
var arr = [10,20,5,1000,50];
var newarr = arr.map(function (value, index, array) {
return value *2;
});
document.write(newarr);
(15)数组名.filter(函数)
过滤筛选,当满足你制定的条件时,会返回一个新的数组
var arr = [10,7,5,1000,50];
var newarr = arr.filter(function (value, index, array) {
return value % 2 ===0;
});
document.write(newarr); //10,1000,50
(16)数组名.every(函数)
当数组中每一个元素都满足制定的条件时,返回true
;否则返回false
。
var arr = [10,7,5,1000,50];
var a = arr.every(function (value, index) {
return value > 10;
});
document.write(a); //false
(17)数组名.some(函数)
只要数组中的一个元素满足制定的条件,就返回true
;当数组中每一个元素都不满足制定的条件时,才返回false
。
var arr = [10,7,5,1000,50];
var a = arr.some(function (value, index) {
return value > 10;
});
document.write(a); //true
2.Math对象
3.String对象
4.Date对象