日期Date

1.Date對象

      Date類型使用自UTC(國際協(xié)調(diào)時間)1970年1月1日零時開始經(jīng)過的毫秒來保存日期,Date類型保存的日期能夠精確到1970年1月1日之前或者之后的285616年.

1.獲取當(dāng)前的時間(本地的時間)

var date = new Date() //不傳參就是獲取當(dāng)前時間

2.獲取指定的時間

var date = new Date(123456) //一個參數(shù)毫秒值 將這個毫秒值去加上對應(yīng)的1970.1.1 0:0:0
var date = new Date('2000/1/1 00:00:00') //指定一個字符串 來指定對應(yīng)的時間 規(guī)定格式
var date = new Date(2000,10,5,12,15,15) //年 月 日 時 分 秒 

二.Date對象的方法

方法 描述
getDate() 從Date對象返回一個月中的某一天(1~31)
getDay() 從Date對象返回一周中某一天(0~6)
getMonth() 從Date對象返回月份(0~11)
getFullYear() 從Date對象以四位數(shù)字返回年份
getYear() 用getFullYear()方法代替(該方法計算的日期不準(zhǔn)確)
getHours() 返回Date對象的小時(0~23)
getMinutes() 返回Date對象的分鐘(0~59)
getSeconds() 返回Date對象的秒數(shù)(0~59)
getMilliseconds() 返回Date對象的毫秒(0~999)
getTime() (計算機(jī)的紀(jì)元時間為:1970年1月1日0分0秒)從紀(jì)元時間到現(xiàn)在的毫秒數(shù)
setDate() 設(shè)置Date對象中的月中的某一天(1~31)
setMonth() 設(shè)置Date對象中的月份(0~11)
setFullYear() 設(shè)置Date對象的四位數(shù)字年份
setYear() 用setFullYear()方法代替
setHours() 設(shè)置Date對象的小時(0~23)
setMinutes() 設(shè)置Date對象的分鐘(0~59)
setSeconds() 設(shè)置Date對象的秒數(shù)(0~59)
setMilliseconds() 設(shè)置Date對象的毫秒(0~999)
setTime() 以毫秒設(shè)置Date對象
toString() 把Date對象設(shè)置為字符串(有雙引號)

               注意:這些方法針對的是Date函數(shù)所創(chuàng)建的對象誕生時的那一時分秒,年月日,它們記錄的不是當(dāng)前的時分秒,年月日。

對象Object

1.對象的概念

       對象Object是一種引用數(shù)據(jù)類型,在ECMAScript中對象可以存儲變量和函數(shù)(數(shù)據(jù)和功能)

2.創(chuàng)建對象

      方式一:使用new

  var obj = new Object();        //new方式  

         obj.name = ‘張三’;       //創(chuàng)建屬性字段 

        obj.age = 18;        //創(chuàng)建屬性字段

         new關(guān)鍵字可以省略

        var obj = Object();       //省略了new關(guān)鍵字,不建議

     方法二:字面量方式

var obj = {

                name:'張三',

                age:18

        }

3.具備增刪改查的操作

查(從對象里面獲取數(shù)據(jù))通過key(屬性名)來訪問對應(yīng)的值(屬性值)

var obj = {name:'jack',age:18,isGirl:true,likeFoods:['西瓜','冬瓜','南瓜','哈密瓜'],likeUser:{name:'張三',age:15}}
console.log(obj.name) //第一種訪問 jack
console.log(obj['name']) //第二種訪問 jack
console.log(obj.likeFoods[3]) //哈密瓜 對象里面嵌套數(shù)組
console.log(obj.likeUser.age) //15 對象里面嵌套對象

添加和修改(賦值操作)

//添加和修改 其實就是設(shè)置對應(yīng)的值
// 如果當(dāng)前這個key在對應(yīng)的對象里面可以找到他就修改 如果找不到就是添加
var obj2 = {name:'hello'}
obj2.name = 'world' //能找到 就會覆蓋
obj2.age = 10 //找不到就會添加
console.log(obj2);

刪除操作 使用delete關(guān)鍵詞

//刪除操作 刪除里面的屬性 delete
delete obj2.name //刪除obj2的name屬性
console.log(obj2);

this(關(guān)鍵詞 表示這個他是一個對象 特殊的對象會隨引用的變化而變化)

函數(shù)里面的this (哪個對象調(diào)用這個函數(shù)this就是哪個)(this存在于函數(shù)內(nèi))

全局的this 指向window的 對象里面函數(shù)的this 指向當(dāng)前對象

function sayHello(){
    console.log(this);
}
//函數(shù)的this 指向他的調(diào)用者 誰調(diào)用這個函數(shù) this就是指向誰
//全局調(diào)用的 js的頂層對象 全局對象 window 也就是全局寫的變量 以及全局調(diào)用的方法都是window的
sayHello() //window調(diào)用的 this指向window   sayHello() == window.sayHello()
var a = 10 //全局變量a 相當(dāng)于window的一個屬性及屬性值 a:10
console.log(window['a']);//10
//也就意味在全局聲明的內(nèi)容都是window的內(nèi)容
//也就是全局調(diào)用的內(nèi)容里面的this屬于window
console.log(this) //window window.onload = function(){}
var obj = {
    name:"jack",
    sayHi:function(){
        console.log(this);
        console.log(this===obj);//true
        console.log(this.name); //訪問這個name屬性
    }
}
//調(diào)用這個函數(shù)
obj.sayHi() //obj調(diào)用的 this指向obj
//處于對應(yīng)的對象里面的this指向當(dāng)前的對象

在那句聲明的變量都是屬于window的屬性 可以通過window[屬性名]進(jìn)行訪問

定時器setInterval(定時去執(zhí)行里面的代碼 執(zhí)行多次

定時器是全局對象window上的方法,內(nèi)部函數(shù)this指向window

清除定時器clearInterval (清除定時器 傳對應(yīng)的id

定時器的分類
             *     1、重復(fù)執(zhí)行定時器
             *         setInterval()
             *         作用
             *             每隔一段時間就會去執(zhí)行指定的函數(shù),重復(fù)的執(zhí)行
             * 
             *         語法
             *             setInterval(function(){
             *                 每隔一段時間就會執(zhí)行這里的代碼
             *             },時間)
             *         參數(shù)
             *             1、要執(zhí)行的函數(shù):當(dāng)時間到了就會執(zhí)行
             *                 注意:如果函數(shù)是在外面定義的,這里面調(diào)用的話只能寫函數(shù)的名字,不能加括號
             *             2、時間:間隔的時間
             *                 單位是毫秒

             *                 1s=1000ms

//window.setInterval(執(zhí)行的函數(shù),執(zhí)行一次的時間,參數(shù)) 他也是異步操作
//不要在定時器聲明變量
var i = 0
//先等待再執(zhí)行
var id = setInterval(function(){
    console.log('定時器執(zhí)行')
    i++
    if(i==10){
        clearInterval(id)
    }
},1000)
//清除定時器
// clearInterval(id)
setInterval(function(arg){
    console.log(arg);
},100,'hello')
//倒計時  輪播圖的動畫 動畫(js)
//先走同步 再走異步

延時器setTimeout(延遲執(zhí)行里面的代碼 只執(zhí)行一次)

清除延時器clearTimeout(清除延時器 銷毀對應(yīng)的延時器)

             *         作用
             *             當(dāng)延遲時間到達(dá)后,會執(zhí)行指定的函數(shù),這個函數(shù)只執(zhí)行一次
             *         語法
             *             setTimeou(function(){
             *                 當(dāng)時間到達(dá)后,會執(zhí)行這里的代碼
             *             },時間);
             *         參數(shù)
             *             1、要執(zhí)行的函數(shù):當(dāng)時間到達(dá)后會執(zhí)行這個函數(shù)
             *                 注意:如果函數(shù)是寫在外面的,在這里調(diào)用的時候只用寫函數(shù)的名字,不能加括號
             *             2、時間:延遲時間
             *                 時間單位也是毫秒
             *                 1s=1000ms
             *         什么時候用
             *             當(dāng)需要延遲一段時間后去做一件事情,就用setTimeout
                           延遲執(zhí)行不同于重復(fù)執(zhí)行,延遲實行只做一次
//window.setTimeout(函數(shù),延遲的時間(毫秒值),傳遞的參數(shù)) //window是可以省略的
//延時器 延遲執(zhí)行 異步的(多線程操作 開一個線程)(同步單線程操作 順序執(zhí)行)
//js引擎的解析為單線程 同步的內(nèi)容相當(dāng)于加了把鎖(同步鎖)順序執(zhí)行(一定上一次執(zhí)行完才能執(zhí)行下一個)
// 異步的就是沒有鎖(不是順序執(zhí)行)
console.log('hello world')
setTimeout(function(){
    console.log('hello')
},5000) //異步的 支付的消息通知 關(guān)閉廣告 銷毀等
console.log('hello 張三')
//代碼執(zhí)行順序 先同步 再異步
setTimeout(function(arg,message){ //對應(yīng)的setTimeout可以傳參數(shù) 傳遞的參數(shù)給里面執(zhí)行的函數(shù)
    console.log(arg,message);
},1000,'我是參數(shù)','你吃飯了嗎') //參數(shù)可以任意的傳 對應(yīng)的函數(shù)內(nèi)需要用形參去接收

 

clearTimeout(延時器id) (清除延時器 銷毀對應(yīng)的延時器)

var id = setTimeout(function(){ //這個id是number類型
 console.log('hello')
},1000)
clearTimeout(id)