日期對象 Date
概述:date是用于表示日期時間的對象,他里面的主要方法是用于獲取日期時間和設置日期時間。
date的聲明
使用new Date來聲明(不傳參)
// 使用new關鍵詞構建的都是對象 對象是引用數據類型
//不傳參數獲取的是當前的本地時間
var date = new Date() //獲取當前的本地時間
console.log(date);
傳遞字符串
//傳遞對應的string類型的參數 根據本地的日期時間格式傳遞
var date = new Date('2000/10/9 12:00')
console.log(date);
// var date = new Date('2000:10:9 12/00') //識別不了
// console.log(date);
傳遞數值(傳遞是毫秒值 離1970/1/1 00:00:00的時間)
//傳遞一個數值 傳遞是毫秒值 根據格林蘭治時間 1970/1/1 00:00:00向上遞增
var date = new Date(1000)//在原本的格林蘭治時間上遞增一秒種
console.log(date);
傳遞多個數值
//傳遞對應的多個參數 年 月 日 時 分 秒 毫秒 可以省略
var date = new Date(2000,11,12,12,12,12) //月份取值時0-11
console.log(date);
日期的比較和計算
日期在對應的比較和計算中會自動變成number類型的毫秒值(離格林蘭治時間的毫秒值)
//date的計算
var date = new Date()
var date1 = new Date('2022/10/1 11:41:00')
console.log(date-date1);//變成number類型
console.log(date+date1);//不會變成number
console.log(date>date1);//true
日期對象的方法
獲取對應的日期時間(get開頭)
var date = new Date()
//獲取年
console.log(date.getFullYear());
//獲取月
console.log(date.getMonth());//0-11 實際月份會比獲取大1
//獲取日
console.log(date.getDate());//當月的第幾天
console.log(date.getDay());//星期幾 星期天是第一天 0-6
//獲取小時 0-23
console.log(date.getHours());
//獲取分鐘 0-59
console.log(date.getMinutes());
//獲取秒鐘 0-59
console.log(date.getSeconds());
//獲取毫秒 0-1000
console.log(date.getMilliseconds());
//獲取時間戳 離對應的格林蘭治時間的毫秒值
console.log(date.getTime());
//靜態(tài)方法 now
console.log(Date.now());
//輔助方法 utc國際標準時間 (上面的相關方法都有對應的utc方法)
console.log(date.getUTCFullYear());
設置對應的日期時間 (set開頭)
//設置相關得方法
var date = new Date()
//設置年份
date.setFullYear(2022)
//設置對應得月份
date.setMonth(11)//設置為12月
date.setMonth(13)//自動往遞進 當前設置為2月 對應的年份就會往上加1
//設置對應的天數
date.setDate(39) //設置當月的第幾天 超過當前月份的天數會自動向上遞進 月份會+1
//設置對應的小時 最大為23 超過23 自動向上遞進 天數會+1
date.setHours(30)
//設置相關分鐘 向上遞進 0-59 小時會+1
date.setMinutes(59)
//設置秒鐘 跟分鐘一樣
date.setSeconds(59)
//設置毫秒值 0-999 向上遞進
date.setMilliseconds(999)
console.log(date);
//根據對應的毫秒值設置對應的時間
date.setTime(1000)
console.log(date);
//設置對應的utc時間
date.setUTCDate(10)
console.log(date);
輔助相關方法 轉為對應的string
console.log(date.toDateString());//將對應的日期轉換string返回
console.log(date.toTimeString());//將對應的時間轉換string返回
console.log(date.toLocaleString());//根據本地的格式 轉為對應的字符串返回
console.log(date.toLocaleDateString());//根據本地的格式 將日期轉為對應的字符串返回
console.log(date.toLocaleTimeString());//根據本地的格式 將時間轉為對應的字符串返回
對象
概述:對象是一種引用數據類型。他可以存儲對應的數據相關的方法(可以擁有相關的屬性及對應的函數(行為))。對象里面構成是用key:value(鍵值對)構成的,一個對應的key對應一個value(key不能重復的 value是可以重復的)。
對象的聲明
使用字面量 {}
var obj = {
name:'jack',//對應的key是name value是jack 多個鍵值對使用,隔開
age:18
}
使用new關鍵詞 Object (Object是所有的類和對象的父類 也就是Object是最大的對象)
var obj = new Object()
obj.name = 'jack'
obj.age = 18
對象的屬性及相關的方法訪問(查詢)
使用對象名.屬性名
var obj = {
name:'jack',//對應的key是name value是jack 多個鍵值對使用,隔開
age:18,
sayHello:function(){
console.log('hello')
}
}
console.log(obj.name) //jack
console.log(obj.age) //18
//調用對應的sayHello方法
obj.sayHello()
使用對象名[屬性名字符串]
var obj = {
name:'jack',//對應的key是name value是jack 多個鍵值對使用,隔開
age:18,
sayHello:function(){
console.log('hello')
}
}
console.log(obj['name']) //jack
console.log(obj['age']) //18
//調用sayHello方法
obj['sayHello']()
對比的相關注意事項
//對象在比對的時候比對是對應的地址
console.log({}=={});//false
關于對象屬性的增刪改的相關操作
增 (就是使用對象名.屬性名進行賦值)
var obj = {}
obj.sex = '男' //給對應的obj添加一個屬性名字為sex
修改 (跟對應的增加操作一致 如果當前屬性本身已經具備那么重新賦值就是修改)
var obj = {
age:18
}
obj.age = 20 //當前屬性已經存在重新賦值就是修改
console.log(obj)
刪除 (使用delete關鍵詞)
var obj = {
age:18,
sex:'男'
}
//刪除對應得屬性 使用delete關鍵詞
delete obj.sex //刪除對應obj的sex屬性
console.log(obj); //{age:18}
this
概述:this是一個特殊的對象,他類似于一個指針會指向對應的對象。(在對象的函數內那么對應的this就指向這個對象,在外面的函數內this就指向最頂層的對象window)。this指向當前調用者
所有的全局變量及全局聲明的函數都是屬于window的(window可以被省略)
var person = new Object()
person.name = 'jack'
person.age = 30
person.like = '泡澡'
person.money = 10000
person.print = function(){
console.log(`姓名 ${this.name} 年齡 ${this.age} 愛好 ${this.like} 薪資期望 ${this.money}`);//this指向person
}
person.print()
//在外面的函數內容 this指向對應的window
function fn(){
console.log(this);
}
fn()//所有的全局變量及全局聲明的函數都是屬于window
window.fn() //window可以被省略
var a = 10
console.log(window.a);
定時器和延時器
概述:屬于window的倆個方法,定時器和延時器是屬于異步的行為,按照對應文檔流順序走的代碼稱為同步代碼(他只有一個任務隊列),異步代碼不按照對應的文檔流執(zhí)行(他會重新開辟一個異步線程),你是沒有辦法知道他什么時候走完。同步代碼比異步代碼先執(zhí)行。定時器是定時器執(zhí)行的(執(zhí)行多次),延時器是延時執(zhí)行(執(zhí)行一次)。
同步和異步
//同步比異步先執(zhí)行
setInterval(function(){
console.log('世界');
}, 0); //就算對應的間隔時間為0他也是異步的
console.log('你好');//先你好再打印世界
定時器 setInterval(做動畫)
//第一個參數是執(zhí)行的函數 第二個對應定時的時間(毫秒值) 第三個傳遞給對應函數的參數
setInterval(handlerFunction,time,arg)
傳遞匿名函數
setInterval(function(params){
console.log(params)
},1000,'hello')
傳遞具名函數
function fn(params){
console.log('hi'+params);
}
//第二種方式 傳遞具名函數
setInterval(fn,1000,'jack')
傳遞字符串 在字符串里面寫代碼 不推薦
//第三種方式 傳遞字符串(字符串里面書寫代碼)
setInterval('console.log("hello")',1000)
清除定時器 用于停止對應的定時器操作
clearInterval(對應的定時器id)//這個id就是對應的setInterval返回的number值
var timer = setInterval(function(){
console.log('hello')
},1000)
//清除對應的定時器
clearInterval(timer)
延時器 setTimeout (對應的等待)
概述:延時器時延遲執(zhí)行 只執(zhí)行一次 (用法和對應的setInterval一樣的)
setTimeout(hanlderFunction,delay,arg)
//執(zhí)行一次就結束 內存并不會釋放
var id = setTimeout(function(){
console.log('三秒后執(zhí)行');
//清除延時器
clearTimeout(id)
},3000)
總結
- 日期對象Date 用于獲取和設置相關的日期時間
- 獲取方法以get開頭 設置方法以set開頭
- 對應的獲取月份的值是0-11 比實際月份值小1
- 對象的聲明可以使用字面量{} 也可以使用new Object()
- Object是最大的對象 所有的對象都是他的子類
- 對象里面的存儲使用key:value 多個屬性使用,隔開
- 獲取對象里面的屬性值可以通過對應的屬性名來獲取 對象.屬性名 對象[屬性名字符串]
- delete 可以刪除對象里面的屬性
- this指向調用者 在對象里面的函數調用者為對象 在外邊的函數調用者為window(global對象 頂層對象)
- 所有的全局變量和全局聲明方法都是屬于window的 window可以通過對應的屬性調用進行調用 window可以省略
- setInterval和setTimeout是屬于window的倆個方法 這個函數里面的this指向window
- setInterval 屬于定時器會定時執(zhí)行 執(zhí)行多次 如果需要停止使用clearInterval(根據id進行清除 id為setInterval的返回值)進行清除
- setTimeout 屬于延時器 延遲執(zhí)行 只執(zhí)行一次(使用方式和setInterval沒有區(qū)別)使用對應clearTimeout可以清除對應的延時器(釋放內存)