1、js中的内置对象
1.1、Date对象
获取年份信息:getFullYear();
获取月份信息:getMonth()+1
获取天数:getDate();
获取小时:getHours();
获取分钟:getMinutes()
获取秒:getSeconds()
获取星期:getDay()(需要注意,周末返回是0)
返回当前时间距离1970-1-1之间的毫秒数:getTime()
关于动态获取当前时间的案例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
var timeOutInt=0;
function getCurrentTime(){
var date = new Date();
//获取年份信息
var myYear = date.getFullYear() ;
//获取月份信息
var myMonth = date.getMonth()+1 ;
//获取当前月中天数
var mydate = date.getDate();
//获取小时
var hour = date.getHours();
//获取分钟
var minutes = date.getMinutes();
//获取秒
var seconds = date.getSeconds() ;
//星期
var day = date.getDay();
var timeInfo = myYear+"-"+myMonth+"-"+mydate+" "+hour+":"+minutes+":"+seconds;
//js的执行顺序是从上向下执行
var divObject =document.getElementById("time");
divObject.innerHTML = timeInfo;
//定时器
timeOutInt=setTimeout("getCurrentTime()",1000);
}
function mystop(){
//清除定时器
clearTimeout(timeOutInt);
}
</script>
</head>
<body >
<div id = "time"></div>
<input type="button" onclick="getCurrentTime()" value="启动">
<input type="button" onclick="mystop()" value="停止">
</body>
</html>
1.2、String对象
在js中定义字符串只要使用双引号或者单引号引起来就可以了,那么也可以采用new String()的方式来创建一个字符串
熟悉一下字符串换的常见的方法
charAt(index):返回指定索引出的字符串
concat 方法(args...):字符串连接
indexOf (“searchStr”):返回搜寻的字符串的首次出现的位置
lastIndexOf (“searchStr”):返回搜寻的字符串最后一次出现的值
<script type="text/javascript">
var str = "hello" ;
console.log(str.charAt(2));
console.log(str.concat('world','aaa','bbb'));
console.log(str.indexOf("l"))
console.log(str.lastIndexOf("l"))
</script>
split("str"):按照指定字符拆分字符串
substr(start,length)
subString(start,end)
toLowerCase()
toUpperCase()
var str = "hello" ;
console.log(str.substr(1,3))
console.log(str.substring(1,3));
console.log(str.toUpperCase());
console.log(str.toUpperCase().toLowerCase())
1.3、Array
数组的定义方式:
方式一:
var array = new Array([size]);
方式二:开发中使用最多
var array = [];
讲解java时候,讲过数组的静态初始化
var array1 = new Array("hello","world","helloworld");
var array2 = ["a","b",new Date(),"c"];
数组的相关属性
数组有一个length属性。表示数组的长度,但是在js中数组的长度受最后一个元素决定
数组的访问通过下标访问,下标从0开始
数组的常见方法如下:
concat(array1...):将多个数组组合成一个数组
arrayObj.join(separator):将数组中的元素通过制定的分割符连接起来
pop():移除数组中的最后一个元素并返回该元素。
var array=["hello","world","helloworld"];
var str = array.pop();
console.log(str);
console.log(array.length);
for(var i = 0;i<array.length;i++) {
console.log(array[i]);
}
push():将新元素添加到一个数组中,并返回数组的新长度值
var array=["hello","world","helloworld"];
var str = array.pop();
var size=array.push("lisi");
console.log(size);
size=array.push("wangwu");
console.log(size);
for(var i = 0;i<array.length;i++) {
console.log(array[i]);
}
reverse():反置数组
shift():移除数组中的第一个元素并返回该元素。
slice(start, [end]) :返回数组中的一段
sort(function(){}):排序,其中function()表示的是排序一种策略
var array = [22,44,56,34,78,99];
console.log(array.sort(function(num1,num2){
return num2-num1;
}));
splice 方法
从一个数组中移除一个或多个元素,如果必要,在所移除元素的位置上插入新元素,返回所移除的元素。
arrayObj.splice(start, deleteCount, [item1[, item2[, . . . [,itemN]]]])
var array = [22,44,56,34,78,99];
array.splice(0,2,"a","b");
console.log(array);
unshift:将指定的元素插入数组开始位置并返回该数组。
arrayObj.unshift([item1[, item2 [, . . . [, itemN]]]])
var array = [22,44,56,34,78,99];
var size = array.unshift("a","b","c");// 返回9
console.log(array);//["a","b","c",22,44,56,34,78,99]
console.log(size)
在js中实际上我们定义数组也可以使用以下方式
<script type="text/javascript">
var array=["a"];
//格式:map的格式
array["name"]="zhangsan";
array["age"]=15;
//console.log(array.length);
//console.log(array["name"]);
//console.log(array["age"]);
//这里需要另外一种语法
for (i in array){
console.log(i,array[i]);
}
</script>
运行结果
在静态初始化的数组中,a实际上是存在value上,a的key为0,此时我们可以认为数组也可以是map格式的
案例:下拉列表的级联操作
参考代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
var array=[];
array["江苏"]=["南京","苏州","徐州","无锡","连云港"];
array["安徽"]=["合肥","宿州","蚌埠"];
array["江西"]=["九江","南昌"];
window.onload=function(){
var prov = document.getElementById("prov");
//填充所有的省份信息
for(p in array) {
var op = new Option(p,p);
prov.appendChild(op);
}
var city = document.getElementById("city");
var citys = array["江苏"];
for(var i = 0 ;i<citys.length;i++) {
var op = new Option(citys[i],citys[i]);
city.appendChild(op);
}
}
function selectCity(value){
var city = document.getElementById("city");
//清除city里面的内容
city.innerHTML="";
var citys = array[value];
for(var i = 0 ;i<citys.length;i++) {
var op = new Option(citys[i],citys[i]);
city.appendChild(op);
}
}
</script>
</head>
<body>
<!--onchange当内容发生变化时,调用此事件-->
<select id="prov" onchange="selectCity(this.value)">
</select>
<select id="city">
</select>
</body>
</html>
1.4、Math对象
Math.ceil(number)
Math.floor(number)
Math.random( )
Math.round(number)
案例(面试的时候)
<script type="text/javascript">
//向上取整
console.log(Math.ceil(15.3)); //结果为16
console.log(Math.ceil(-15.9)); //结果为-15
//向下取整
console.log(Math.floor(15.3)); //结果为15
console.log(Math.floor(-15.9)); //结果为-16
//随机数
console.log(Math.random());
console.log(Math.round(15.5)); //16
console.log(Math.round(-15.5)); //-15
console.log(Math.round(-15.6)); //-16
</script>
1.5、函数对象
函数定义的方式:
function myFun(){
alert("hello");
}
myFun();
var myFun2=function(){
alert("world");
}
myFun2();
(function(){
alert("helloworld");
})();
var add=function(a,b) {
alert(a+b);
};
add(1,2);
var myfun3 = new Function("a","b","alert(a+b)");
myfun3(3,5);
对于最后一种方式的解释:
functionName = new Function( [argname1, [... argnameN,]] body );
参数
functionName
必选项。最新创建函数的名称
argname1...argnameN
可选项。函数接收的参数列表。
body
可选项。包含调用该函数时被执行的 JScript 代码块的字符串。
在js中函数可以重载吗?面试中会涉及到一个问题
在js中不能像java那样发生重载,但是我们可以通过其他机制来实现重载
var myFun=function(a,b){
console.log("myFun1 invoked...")
console.log(a,b);
};
//在运行中,同一时刻一个变量的引用只能指向一个堆
myFun = function(a,b,c){
console.log("myFun1 invoked2...")
console.log(a,b,c);
};
myFun(1,2);
myFun(1,2,3);
如何实现重载呢?
myFun = function(){
if(arguments.length==2) {
return arguments[0]+arguments[1];
}else if(arguments.length==3) {
return arguments[0]+arguments[1]+arguments[2];
}
};
alert(myFun(1,2));
alert(myFun(1,2,3));
总结:在js中函数存在一个隐式参数,arguments,表示函数实际传入的参数,它是一个数组,通过这个参数我们可以实现重载
此外,对于每个函数,都有一个length属性,那么这个属性表示这个函数期望传递的参数的个数