<script id="内置对象介绍">
//JS中提供多个内置对象 String/Math/Array/Date……
//Array对象
//1、检查一个对象是否是数组 使用场景 函数参数要求是数组的情况下
//Array.isArray() 或者 instanceof
//instanceof
var arr = ['张三','李四'];
console.log(arr instanceof Array);
console.log(arr instanceof Boolean);
//但是 instanceof 也存在问题
console.log(arr instanceof Object);//true
//一般用 Array.isArray();
console.log(Array.isArray(arr));
console.log(Array.isArray('arr'));
//toString()/valueOf()
//toString() 将数组转换成字符串,逗号分隔每一项
var arr = ['张三','李四','王五'];
console.log(arr.toString());
//valueOf() 返回数组对象本身 面向对象的继承时
console.log(arr.valueOf());
console.log(arr.valueOf() === arr);//true</script>
<!-- concat() 方法用于连接两个或多个数组。 可以用于后面的数据请求-->
<script id ="concat()">
var arr = new Array(3);
arr[0] = "George";
arr[1] = "John";
arr[2] = "Thomas";
var arr2 = new Array(3);
arr2[0] = "James";
arr2[1] = "Adrew";
arr2[2] = "Martin";
document.write(arr.concat(arr2));//George,John,Thomas,James,Adrew,Martin</script>
<!-- join() 方法用于把数组中的所有元素放入一个字符串。 -->
<script id="join()">
var arr = new Array(3);
arr[0] = "George";
arr[1] = "John";
arr[2] = "Thomas";
document.write('<br>');
document.write(arr.join('----'));//用分隔符分隔,默认由逗号分隔
document.write('<br>'); //George----John----Thomas</script>
<!-- pop() 方法用于删除并返回数组的最后一个元素。 -->
<script id="pop()">
var arr = new Array(3)
arr[0] = "George";
arr[1] = "John";
arr[2] = "Thomas";
document.write(arr);
document.write("<br>");
document.write(arr.pop());
document.write("<br>");
document.write(arr);
//George,John,Thomas
//Thomas
//George,John</script>
<!-- push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。 -->
<script id="push()">
var arr = new Array(3);
arr[0] = "George";
arr[1] = "John";
arr[2] = "Thomas";
document.write(arr + "<br>");
document.write(arr.push("James") + "<br>");
document.write(arr);
//George,John,Thomas
//4
//George,John,Thomas,James</script>
<!-- reverse() 方法用于颠倒数组中元素的顺序。 -->
<script id="reverse()">
var arr = new Array(3);
arr[0] = "George";
arr[1] = "John";
arr[2] = "Thomas";
document.write(arr + "<br>");
document.write(arr.reverse());
//George,John,Thomas
//Thomas,John,George</script>
<!-- shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。 -->
<script id="shift()" >
var arr = new Array(3);
arr[0] = "George";
arr[1] = "John";
arr[2] = "Thomas";
document.write(arr + "<br>");
document.write(arr.shift() + "<br>");
document.write(arr);
//George,John,Thomas
//George
//John,Thomas</script>
<!-- slice() 方法可从已有的数组中返回选定的元素。 未规定范围的话选定的到数组结尾的,返回一个新的数组,包含从start到end(不包括该元素)-->
<script id="slice()">
var arr = new Array(6);
arr[0] = "George";
arr[1] = "John";
arr[2] = "Thomas";
arr[3] = "James";
arr[4] = "Adrew";
arr[5] = "Martin";
document.write(arr + "<br>");
document.write(arr.slice(2,4) + "<br>");
document.write(arr);
//George,John,Thomas,James,Adrew,Martin
//Thomas,James
//George,John,Thomas,James,Adrew,Martin</script>
<!-- splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。 -->
<script id="splice()">
var arr = new Array(6);
arr[0] = "George";
arr[1] = "John";
arr[2] = "Thomas";
arr[3] = "James";
arr[4] = "Adrew";
arr[5] = "Martin";
document.write(arr + "<br>");
arr.splice(2,0,"William");
document.write(arr + "<br>");
//George,John,Thomas,James,Adrew,Martin
//George,John,William,Thomas,James,Adrew,Martin
var arr = new Array(6);
arr[0] = "George";
arr[1] = "John";
arr[2] = "Thomas";
arr[3] = "James";
arr[4] = "Adrew";
arr[5] = "Martin";
document.write(arr + "<br>");
arr.splice(2,1,"William");
document.write(arr);
//George,John,Thomas,James,Adrew,Martin
//George,John,William,James,Adrew,Martin
var arr = new Array(6);
arr[0] = "George";
arr[1] = "John";
arr[2] = "Thomas";
arr[3] = "James";
arr[4] = "Adrew";
arr[5] = "Martin";
document.write(arr + "<br>");
arr.splice(2,3,"William");
document.write(arr);
//George,John,Thomas,James,Adrew,Martin
//George,John,William,Martin</script>
<!-- toSource() 方法表示对象的源代码。
该原始值由 Array 对象派生的所有对象继承。
toSource() 方法通常由 JavaScript 在后台自动调用,并不显式地出现在代码中。 -->
<!-- *只有 Gecko 核心的浏览器(比如 Firefox)支持该方法,也就是说 IE、Safari、Chrome、Opera 等浏览器均不支持该方法。 -->
<!-- <script id="=toSource">
function employee(name,job,born){
this.name=name;
this.job=job;
this.born=born;
}
var bill=new employee("Bill Gates","Engineer",1985);
document.write(bill.toSource());
//({name:"Bill Gates", job:"Engineer", born:1985}) </script> -->
<script id="toString()/valueOf">
//toString() 将数组转换成字符串,逗号分隔每一项
var arr = ['张三','李四','王五'];
console.log(arr.toString());
//valueOf() 返回数组对象本身 面向对象的继承时
console.log(arr.valueOf());
console.log(arr.valueOf() === arr);//true</script>
<!-- 把数组转换为本地字符串。 -->
<script id="toLocaleString()">
var arr = new Array(3);
arr[0] = "George";
arr[1] = "John";
arr[2] = "Thomas";
document.write(arr.toLocaleString());
//George, John, Thomas</script>
<!-- unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。 -->
<script id="unshift()">
var arr = new Array();
arr[0] = "George";
arr[1] = "John";
arr[2] = "Thomas";
document.write(arr + "<br>");
document.write(arr.unshift("William") + "<br>");
document.write(arr);
//George,John,Thomas
//4
//William,George,John,Thomas</script>
<!-- 索引 从前往后 从后往前 -->
<script id="indexOf()和lastIndexOf()">
var arr = [2,4,6,8,10,8,6,4,2];
console.log(arr);
console.log(arr.indexOf(4,3));//7 第一个参数表示要找的数 第二个参数表示从哪个位置开始找
console.log(arr.lastIndexOf(6,2));//2 第一个参数表示要找的数 第二个参数表示从哪个位置开始找
//用lastIndexOf()帮助获取文件后缀名</script>
<!-- 遍历数组 -->
<script id="forEach()">
var arr = ['morning' , 'afternoon' , 'night'];
arr.forEach(function(value,index,array){
console.log(value);
console.log(index);
console.log(array);
});
//forEach()方法需要一个函数作为参数 这个函数是我们创建但不由我们调用的,称为回调函数
//数组中有几个元素,函数就会执行几次,每次执行时,浏览器会将遍历到的元素以实参的形式传递进来,我们可以定义形参,来读取这些内容
//浏览器会在回调函数中传递三个参数
//第一个参数 当前正在遍历的元素 第二个参数 当前正在遍历的元素的索引 第三个 正在遍历的数组</script>
<!-- sort() 方法用于对数组的元素进行排序。 -->
<script id="sort()">
//sort()方法默认按照字符编码的顺序排序
//如果想按照其他标准排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字,比较函数应该具有两个函数参数 a和b
var arr = new Array(6);
arr[0] = "George";
arr[1] = "John";
arr[2] = "Thomas";
arr[3] = "James";
arr[4] = "Adrew";
arr[5] = "Martin";
document.write(arr + "<br>");
document.write(arr.sort());
//George,John,Thomas,James,Adrew,Martin
//Adrew,George,James,John,Martin,Thomas
var arr = new Array(6);
arr[0] = "10";
arr[1] = "5";
arr[2] = "40";
arr[3] = "25";
arr[4] = "1000";
arr[5] = "1";
document.write(arr + "<br />");
document.write(arr.sort());
//10,5,40,25,1000,1
//1,10,1000,25,40,5
//请注意,上面的代码没有按照数值的大小对数字进行排序,要实现这一点,就必须使用一个排序函数:
function sortNumber(a,b){
return a - b;
}
//若a<b,在排序后的数组中a应该出现在b之前,则返回一个小于0的值
//若a=b,则返回0
//若a>b,则返回一个大于0的值
var arr = new Array(6);
arr[0] = "10";
arr[1] = "5";
arr[2] = "40";
arr[3] = "25";
arr[4] = "1000";
arr[5] = "1";
document.write(arr + "<br>");
document.write(arr.sort(sortNumber));//实际为冒泡法
document.write('<br>');
//10,5,40,25,1000,1
//1,5,10,25,40,1000
var arr1 = new Array(6);
arr1[0] = "George";
arr1[1] = "John";
arr1[2] = "Kobe";
arr1[3] = "James";
arr1[4] = "Jee";
document.write('<br>');
document.write(arr.sort(sortNumber));//排序失败
document.write('<br>');
function sortNumber1(a,b){
return a.length - b.length;
}
document.write(arr1.sort(sortNumber1));
/**
* sort 内部的实现
* @param {Object} array [description]
* @param {Function} fnCompare [description]
*/
function sort(array,fnCompare){
//控制循环次数
for (var i = 0; i < arr.length; i++) {
//标记一下是否完成排序
var sortFlag = true;
for (var j = 0; j < arr.length - i; j++) {
if(fnCompare(array[j],array[j+1])>0){
sortFlag = false;
var temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
//判断
if (sortFlag) {
break;
}
}
}
function sortNumber(a,b){
return a - b;
}
var arr2 = [10,20,32,31,23,5,0];
sort(arr2,sortNumber);
console.log(arr2); </script>
ES6新增
<script id="map()">
//映射(一一对应),[].map() 基本用法跟forEach方法类似 array.map(callback,[thisObject])
//但是callback需要return值(如果没有会返回undefined
var arr = [12,20,5,25,30];
var newArr = arr.map(function (value,index,array){
//return value * 2;
return value > 10 && value * 2;//会返回新数组 不符合直接返回false
});
console.log(newArr);</script>
<script id="filter()分割/过滤">
//作用:过滤筛选
//callback在这里担任的是过滤器的角色,当元素符合条件时,过滤器就会返回true,
//而filter则会返回所有符合过滤条件的元素
var arr = [1,2,3,4,5,6,7,8,9];
var newArr = arr.filter(function (value,index,array){
return value % 2 ===0 && value > 5;
})
console.log(newArr);</script>
<script id="every(且)">
//返回值 Boolean类型
var arr = [23,2,5,6];
var newArr = arr.every(function (value){
return value > 3;
});
console.log(newArr);</script>
<script id="some(或)">
//返回值 Boolean类型
var arr = [23,2,5,6];
var newArr = arr.some(function (value){
return value > 100;
});
console.log(newArr);//false</script>
<script id="Math">
/*Math
Math和Array不同,Array是构造函数 而Math对象不是构造函数
它具有数学常数和函数的属性和方法,都是以静态成员的方式提供
静态成员和实例成员的区别:
静态成员:直接使用对象来调用的
实例成员:构造函数中的成员就是实例成员 实例也称为对象*/
/*<!-- 方法 描述
acos(x) 返回数的反余弦值。
asin(x) 返回数的反正弦值。
atan(x) 以介于 -PI/2 与 PI/2 弧度之间的数值来返回 x 的反正切值。
atan2(y,x) 返回从 x 轴到点 (x,y) 的角度(介于 -PI/2 与 PI/2 弧度之间)
exp(x) 返回 e 的指数。
log(x) 返回数的自然对数(底为e)。
round(x) 把数四舍五入为最接近的整数。
Math.PI 圆周率
random() 返回 0 ~ 1 之间的随机数。
Math.floor()/Math.ceil() 向下取整/向上取整
max(x,y)/min(x,y) 返回 x 和 y 中的最大值/最小值
sin(x)/cos(x) 返回数的正弦/余弦
Math.power()/Math.sqrt() 求指数次幂/求平方根
pow(x,y) 返回 x 的 y 次幂。
abs(x) 返回数的绝对值。
tan(x) 返回角的正切。
toSource() 返回该对象的源代码。
valueOf() 返回 Math 对象的原始值。 -->*/
/* console.log(Math.PI); 3.141592653589793
console.log(Math.ceil(Math.PI)); 4
*/
//Math.random() //0-1
//Math.random()*10 //0-10
//如果输出3-8,4-11的
//公式 Math.random() * (y - x) + x
//开发中基本用到underScore库
//补充静态成员和实例成员
/*var LKTool = {
height:300,
doIt = function(){
}
};
console.log(LKTool.height);//此中为静态成员
function Dog(name,sex){
this.name = name;
this.sex = sex;
}*/ //构造函数
/*var dog = new Dog('xiaobai','gong');
console.log(dog.name);*///此为实例成员
</script>
<script id="String对象">
//概念 字符串所有的方法,都不会修改字符串本身(字符串是不可变的,操作完成则会返回一个新的字符串)
//性能问题 拼接大量字符串时,会有性能问题 一、服务器端渲染 二、模板引擎
// 1)获取字符串中字符的个数 str.length
// 2)字符方法
// charAt() 获取指定位置处的字符
/*var str = 'www.4399.com';
console.log(str.charAt(5)); 3 */
//遍历
/*for (var i = 0; i < str.length; i++) {
console.log(str.charAt(i));
}*/
// charCodeAt() 获取指定位置处字符的ASCII码
// var str1 = 'abc.com';
//遍历
// for (var i = 0; i < str1.length; i++) {
/*console.log(str.charAt(i));
console.log(str1.charCodeAt(i));*/
//下标获取 也是可以的 HTML5 IE8+支持 和charAt()等效
// console.log(str1[i]); }
//字符串操作方法
//concat() 拼接字符串 等效于+ +更常用
//slice() 从start 开始 到end end取不到
//substring() 从start 开始 到end end取不到
//substr(开始位置,截取长度) 从start 开始,截取length个字符
var str = 'abc.com';
var newStr = str.substr(1,2);
console.log(newStr);//bc
//结合使用
console.log(str.substr(str.lastIndexOf('.')));//直接输出.com
console.log(str.substr(str.lastIndexOf('.'),2));//.c
//所以截取后缀可以采用以上方法
//位置方法 与数组相同 indexOf()和lastIndexOf()
//去除空白 trim() 不能只能去除字符串前后的空白
var str2 = ' w45f ';
console.log(str2); // w45f
console.log(str2.trim());//w45f
var str3 = ' we 42 ';
console.log(str3.trim());//we 42 中间的去不掉 要靠正则去掉
//大小写转换 toUpperCase() 转大写 toLowerCase() 转小写
var str4 = 'ITLIKE';
console.log(str4.toLowerCase());
console.log(str4.toUpperCase());
//其他
//search() 和 split()
var str5 = 'like it';
var n = str5.search("ke");
console.log(n);//2
//案例 URL转换成对象 split()
var url = 'http://www.itlike.com/user?name=xl&pwd=lovexl&sex=女&age=22';
//目的 把问号后 键值对转换成字符串
function getUrlParams(url){
//找到起点
var index = url.indexOf('?') + 1;
var params = url.substr(index);
var paramsArr = params.split('&');
//console.log(paramsArr);
var obj = {};
paramsArr.forEach(function(value,index,array){
var tempArr = value.split('=');
//console.log(tempArr);
var key = tempArr[0];
obj[key] = tempArr[1];
//console.log(obj);
})
return obj;
}
var obj = getUrlParams(url);
console.log(obj);
console.log(obj.name);
console.log(obj.sex);
</script>