Date日期
日期對(duì)象的定義(使用new關(guān)鍵詞)
1俭尖、獲取當(dāng)前的時(shí)間(本地的時(shí)間)
var date=new Date()//不傳參 獲取當(dāng)前的時(shí)間
2、獲取指定的時(shí)間
var date=new Date(123456)//一個(gè)參數(shù)毫秒值 將這個(gè)毫秒值加上對(duì)應(yīng)的1970.1.1 0:0:0
var date=new Date('2000/1/1 00:00:00')//指定一個(gè)字符串 來(lái)指定對(duì)應(yīng)的時(shí)間 規(guī)定格式
var date=new Date(2000,8,8,12,15,15)//年 月 日 時(shí) 分 秒
日期對(duì)象的方法
get獲取時(shí)間
// get獲取的方法
// 年 月 日 時(shí) 分 秒 星期 對(duì)應(yīng)的時(shí)間挫(毫秒值 離1970/1/1的毫秒值)
var date=new Date()
console.log(date.getFullYear());//年
console.log(date.getMonth()+1);//月只有0-11 所以+1
console.log(date.getDate());//一個(gè)月中的第幾天
console.log(date.getDay());//一個(gè)星期中的第幾天 星期天是第一天 0
console.log(date.getHours());//獲取時(shí)間小時(shí) 24為0 0-23
console.log(date.getMinutes());//獲取時(shí)間分鐘 60為0 0-59
console.log(date.getSeconds());//獲取時(shí)間分鐘 60為0 0-59
console.log(date.getTime());//獲取時(shí)間挫 離1970/1/1的毫秒值
//時(shí)區(qū)的偏移
console.log(date.getTimezoneOffset());
set設(shè)置時(shí)間
//set設(shè)置
date.setFullYear(1888,8,18)//可以同時(shí)設(shè)置年月日
console.log(date);
date.setMonth(8,28)//可以同時(shí)設(shè)置月日
console.log(date);
date.setDate(8)//設(shè)置日
console.log(date);
date.setHours(18,8,58)//可以同時(shí)設(shè)置時(shí)分秒
console.log(date);
date.setMilliseconds(188)//設(shè)置毫秒
console.log(date);
重點(diǎn)月份0-11月(獲取的月份比實(shí)際會(huì)小1)星期天為0
其他的方法
var date=new Date()
//轉(zhuǎn)為字符串
console.log(date.toString());//普通字符串轉(zhuǎn)換
console.log(date.toDateString());//以特定的格式顯示星期幾羽历、 月、 日和年
console.log(date.toTimeString());//以特定的格式顯示時(shí)淡喜、 分秕磷、 秒和時(shí)區(qū)
console.log(date.toLocaleDateString());//以特定地區(qū)格式顯示年、 月炼团、 日
console.log(date.toLocaleTimeString());//以特定地區(qū)格式顯示時(shí)澎嚣、 分、 秒
console.log(date.toUTCString());//以特定的格式顯示完整的 UTC 日期: 年, 月, 日, 時(shí), 分, 秒瘟芝。
//parse 格式化
console.log(Date.parse("2015|08|24"));//轉(zhuǎn)為NaN 日期就是一個(gè)Number值
console.log(Date.parse("2015-08-24"));//得到毫秒值 離1970/1/1
//得出2015年8月24日離現(xiàn)在的時(shí)間
var current=new Date()
var old=new Date(2015,8,24)
console.log(current-old);
對(duì)象
概述:對(duì)象是一個(gè)引用數(shù)據(jù)類型易桃,所有引用數(shù)據(jù)類型都是對(duì)象,(使用new關(guān)鍵詞開辟的內(nèi)存空間都是對(duì)象空間)Array(typeof是object)锌俱。
==比對(duì)? 比對(duì)的是地址值? ===比對(duì) 比對(duì)的是對(duì)應(yīng)倆個(gè)是否是同一個(gè)
Object本身是一個(gè)函數(shù)晤郑,可以當(dāng)作工具方法使用,將任意值轉(zhuǎn)為對(duì)象。這個(gè)方法常用于保證某個(gè)值一定是對(duì)象造寝。
如果參數(shù)為空(或者為undefined和null)磕洪,Object()返回一個(gè)空對(duì)象。
var obj=Object();
// 等同于
var obj=Object(undefined);
var obj=Object(null);
obj instanceof Object// true
//將undefined和null轉(zhuǎn)為對(duì)象诫龙,結(jié)果得到了一個(gè)空對(duì)象obj析显。
對(duì)象的定義
1、字面量的形式
var obj={}//{}表示的是對(duì)象
2签赃、new觀念檢查來(lái)構(gòu)建對(duì)象
var obj=newObject()
對(duì)象的結(jié)構(gòu)(容器 他具備存儲(chǔ)數(shù)據(jù)的功能)
對(duì)象的結(jié)構(gòu)是以key:value的形式體現(xiàn)(鍵值對(duì)的形式 key是唯一的 value可以是任意類型)
var obj={
????new:'jack',
????age:18,
????isGirl:true,
????likeFoods:['西瓜','冬瓜','南瓜','北瓜'],
????likeUser:[name:'czh',age;18]
}
具備增刪改查的操作
查(從對(duì)象里面獲取數(shù)據(jù))通過(guò)key(屬性名)來(lái)訪問(wèn)對(duì)應(yīng)的值(屬性值)
varobj={
????name:'jack',
????age:18,
????isGirl:true,
????likeFoods: ['西瓜','冬瓜','南瓜','北瓜'],
????likeUser: {name:'czh',age:18}
? ? ?? }
console.log(obj.name)//第一種訪問(wèn)
console.log(obj['name'])//第二種訪問(wèn)
console.log(obj.likeFoods[3])//南瓜 對(duì)象里面嵌套數(shù)組訪問(wèn)
console.log(obj.likeUser.age)//15 對(duì)象里面嵌套對(duì)象訪問(wèn)
添加和修改(賦值操作)
//添加和修改 其實(shí)就是設(shè)置對(duì)應(yīng)的值
//如果當(dāng)前這個(gè)key在對(duì)應(yīng)的對(duì)象里面可以找到他就修改 如果找不到就是添加
var obj2={
????name:'hello'
}
obj2.name='wolrd'//能找到 就會(huì)覆蓋
obj2.age=10//找不到就會(huì)添加
console.log(obj2);
刪除操作 使用delet關(guān)鍵詞
//刪除操作 刪除里面的屬性 delete
delete obj2.name//刪除obj2里面的name
console.log(obj2);
this(關(guān)鍵詞表示這個(gè)他是-個(gè)對(duì)象特殊的對(duì)象會(huì)隨引用的變化而變化)
函數(shù)里面的this (哪個(gè)對(duì)象調(diào)用這個(gè)函數(shù) this就是哪個(gè)) (this存在于函數(shù)內(nèi))
全局的this 指向window的 對(duì)象里面函數(shù)的this 指向當(dāng)前對(duì)象
function sayHello() {
????console.log(this)
}
//函數(shù)的this指向他的調(diào)用者 誰(shuí)調(diào)用這個(gè)函數(shù) this就是指向誰(shuí)
//全局調(diào)用的 js的頂層對(duì)象 全局對(duì)象 window 也就是全局寫的變量 以及全局調(diào)用的方法 都是widow的
sayHello()//window調(diào)用的 this指向window ?? sayHello() == window.sayHello
var a=10//全局變量a 相當(dāng)于window的一個(gè)屬性及屬性值 a:10
console.log(window['a']);//10
//也就意味著 在全局聲明的內(nèi)容都是window的內(nèi)容
//也就是說(shuō) 全局調(diào)用的內(nèi)容里面的屬于window
console.log(this);//window
var obj={
name:"jack",
sayHi:function() {
console.log(this);//this指向obj
console.log(this==obj);//true
console.log(this===obj);//true
console.log(this.name);//訪問(wèn)自身name屬性
?? }
}
//調(diào)用這個(gè)函數(shù)
obj.sayHi()//obj調(diào)用的 this指向obj
//處于對(duì)應(yīng)的對(duì)象里面的this指向當(dāng)前的對(duì)象
在全局聲明的變量都屬于window的屬性 可以通過(guò)window【屬性名】進(jìn)行訪問(wèn)
var obj=newObject()
var obj1=newObject()
var obj2={}
var obj3={}
console.log(obj==obj1)? //false
console.log(obj==obj2)? //false
console.log(obj2==obj3) //false
console.log(obj2=={})? //false
window的倆個(gè)方法
延時(shí)器
setTimeout(延時(shí)器 延遲執(zhí)行里面的代碼 只執(zhí)行一次)
//window.setTimeout(函數(shù)叫榕,延遲的時(shí)間(毫秒值),傳遞的參數(shù))? ? //window是可以省略的
//延時(shí)器 延遲執(zhí)行 異步的(多線程操作 開一個(gè)線程) ? (同步單線程操作 順序執(zhí)行)
//js引擎的解析為單線程? 同步的內(nèi)容相當(dāng)于加了一把鎖(同步鎖)順序執(zhí)行(一定是上一次執(zhí)行完才能執(zhí)行下一個(gè))
//異步的就是沒(méi)有鎖(不是順序執(zhí)行)
console.log('hello world');
setTimeout(function() {
????console.log('hello')
},5000)//異步的 可以做支付的消息通知 可以做關(guān)閉廣告 垃圾彈窗 銷毀等
console.log('hello 張三');
//代碼執(zhí)行順序 先同步 再異步
setTimeout(function(arg,message) {//對(duì)應(yīng)的setTimeout可以傳遞參數(shù) 傳遞參數(shù)給里面執(zhí)行的函數(shù)
console.log(arg,message);
},1000,'我是參數(shù)','你吃飯了嗎')//參數(shù)可以任意的傳 對(duì)應(yīng)的函數(shù)內(nèi)需要用形參去接收
clearTimeout(延時(shí)器id)(清除延時(shí)器 銷毀對(duì)應(yīng)的延時(shí)器)
var id=setTimeout(function(){//這個(gè)id是number類型
? ? console.log('hello')
},1000)
clearTimeout(id)
定時(shí)器
setInterval(定時(shí)器 定時(shí)去執(zhí)行里面的代碼 執(zhí)行多次)
clearIntval(清除定時(shí)器 傳對(duì)應(yīng)的id)
//window.setInterval(執(zhí)行的函數(shù)姊舵,執(zhí)行一次的時(shí)間,參數(shù))他也是異步的
//不要在定時(shí)器內(nèi)聲明變量 因?yàn)闀?huì)無(wú)限執(zhí)行
var i=0
var id=setInterval(function() {
console.log('定時(shí)器執(zhí)行')
i++
if(i==10) {
//清除定時(shí)器
clearInterval(id)
?? }
},1000)
setInterval(function(arg){
console.log(arg);
},100,'hello')
//倒計(jì)時(shí) 輪播圖的動(dòng)畫 任意動(dòng)畫(js)
//先走同步代碼 再走異步代碼
不要再setIntval里面套setIntval
如果setIntval套了setIntval 里面的代碼執(zhí)行時(shí)間要比外面的短