JavaScript散亂(三孕蝉、對象,BOM,DOM)

js對象

  • 使用特殊的屬性名,不能使用.方式操作
let obj={};
obj.name="zeng";
obj["123"]="hehe";
console.log(obj["name"],obj["123"]);//zeng hehe
console.log(obj[name],obj["123"],obj.name);//underfined hehe zeng
說明:[]內(nèi)部必須是字符串,內(nèi)部可以傳入字符串類型的變量更加靈活
  • in 運算符

通過該運算符可以檢查一個對象中是否包含有指定的屬性,返回布爾值

函數(shù)

- 直接return其實返回的是underfined
- 自執(zhí)行函數(shù)
(function(){
    console.log("自執(zhí)行函數(shù)")
})()
說明:匿名函數(shù)腌逢,如果外面不加()則{}會被當成代碼塊降淮,全面的function無法識別。

作用域

  • 全局作用域
    • 變量的聲明提前
    • 函數(shù)的聲明會被提前搏讶,所以聲明式的函數(shù)可以在任地方使用
    • 函數(shù)表達式佳鳖,不會被提前
    test();//test
    //函數(shù)式聲明
   function test(){
       console.log("test");
   }
    test1();//報錯
    //函數(shù)表達式
    var test1=function(){
       console.log("test");
   }
  • 函數(shù)作用域:基本和全局作用域一致,只是在函數(shù)塊內(nèi)起作用

this

  • 根據(jù)函數(shù)的調(diào)用方式不同媒惕,this會指向不同對象
  • 以函數(shù)形式調(diào)用系吩,永遠this都是windows
  • 以方法的形式調(diào)用時,this指向調(diào)用的對象
var name="呵呵";
function test(){
    console.log(name,this.name,this);
    //name如果函數(shù)內(nèi)部不存在就會去全局找妒蔚,但是this.name指向調(diào)用者
}
test();//呵呵 呵呵 Window {postMessage: ?, blur: ?, focus: ?, close: ?, frames: Window, …}
var obj={
    show:test,
    name:"測試"
}
obj.show()//呵呵 測試 {show: ?, name: "測試"}

數(shù)組

  • slice截取(切片)數(shù)組 得到截取的數(shù)組
    返回從原數(shù)組中指定開始索引(包含)到結束索引(不包含)之間的項組成的新數(shù)組,原數(shù)組木變 穿挨,索引從0開始
  • splice剪接數(shù)組 原數(shù)組變化 可以實現(xiàn)shift前刪除,pop后刪除,unshift前增加,同push后增加一樣的效果
  • sort(回調(diào)函數(shù)) 回調(diào)函數(shù)返回值大于1則元素交換位置
  • indexOf數(shù)組元素索引肴盏,并返回元素索引科盛,不存在返回-1,索引從0開始
  • join數(shù)組轉成字符串,并返回字符串菜皂,原數(shù)組不變
  • reverse 數(shù)組翻轉贞绵,并返回翻轉后的原數(shù)組,原數(shù)組翻轉了
  • reverse 數(shù)組翻轉恍飘,并返回翻轉后的原數(shù)組榨崩,原數(shù)組翻轉了

arguments

  • 是一個類數(shù)組對象,可以通過索引來操作數(shù)據(jù)章母,也可以獲取長度
  • 所有實參都保存在arguments中
  • arguments有個callee屬性母蛛,代表就是當前正在指向的函數(shù)對象

DOM

DOM查詢

  • 通過document對象調(diào)用
  • getElementById()
  • getElementsByTagName() 通過標簽名獲取一組元素節(jié)點
  • getElementsByName() 通過name屬性獲取一組元素節(jié)點對象
  • 通過具體的元素節(jié)點調(diào)用(獲取元素節(jié)點的子節(jié)點)
  • getElementsByTagName() 獲取當前節(jié)點的指定標簽名的后代節(jié)點
  • childNodes屬性 當前節(jié)點的所以子節(jié)點
  • firstChild屬性 當前節(jié)點的第一個子節(jié)點
  • lastChild屬性 當前節(jié)點的最好一個子節(jié)點
  • 獲取父節(jié)點和兄弟節(jié)點(通過具體節(jié)點調(diào)用)
  • parentNode屬性 當前節(jié)點的父節(jié)點
  • previousSibling屬性 當前節(jié)點的前一個兄弟節(jié)點
  • nextSibling屬性 當前節(jié)點的后一個兄弟節(jié)點
  • 剩余補充
  • document.body 獲取body標簽
  • document.documentElement 獲取html根標簽
  • document.getElementsByClassName()
  • document.querySelector(選擇器) 返回滿足條件的第一個
  • document.querySelectorAll(選擇器) 返回所有滿足條件的
    //頁面加載完畢才執(zhí)行
    window.onload = function () {
        let btn = document.getElementById("btn");
        //綁定事件
        btn.onclick = () => {
            btn.innerText = btn.className;
            btn.style.width=100+"px";
            // console.log(btn.style);//這種方式只能讀取標簽的內(nèi)聯(lián)樣式
            //獲取元素當前顯示的樣式
            //只在IE上面有效
            // console.log(btn.currentStyle)
            //其他瀏覽器上面getComputedStyle,是window的方法,IE9以上支持
            //參數(shù)一:要獲取樣式的元素
            //參數(shù)二:可以傳遞一個偽元素,一般都傳遞null
            console.log(getComputedStyle(btn,null)["width"])
        }
    }

其他相關的屬性

  • 計算規(guī)則:內(nèi)容區(qū)+內(nèi)邊距
    • clientHeight 返回元素可見高度(只讀)
    • clientWidth 返回元素可見寬度(只讀)
  • 計算規(guī)則:內(nèi)容區(qū)+內(nèi)邊距+邊框
  • offsetHeight 返回元素的高度(只讀)

  • offsetWidth 返回元素的寬度(只讀)

  • offsetParent 獲取當前元素的定位父元素(獲取的是一個對象,離當前元素最近的開啟了定位的祖先元素)

  • offsetLeft 返回元素的水平偏移位置

  • offsetTop 返回元素的垂直偏移位置

  • scrollHeight 返回元素整體高度

  • scrollWidth 返回元素整體寬度

  • scrollLeft 返回元素左邊緣與滾動條之間的距離

  • scrollTop 返回元素上邊緣與滾動條之間的距離

  • 當scrollHeight-scrollTop=clientHeight說明垂直滾動條到底

事件對象(event)

當事件的響應函數(shù)被觸發(fā)時乳怎,瀏覽器每次都會將一個事件對象作為實參傳遞進響應函數(shù)溯祸。event對象包含該事件的所有信息。

  • event.target 表示的是事件觸發(fā)的對象
let d=document.querySelector("div");
d.onmousemove=(event)=>{
    console.log(event.offsetX);
}

事件冒泡

事件的向上傳導,當后代元素上的事件被觸發(fā)時焦辅,其祖先元素的相同事件也會被觸發(fā)。

  • 阻止冒泡
    • event.cancleBubble=true
    • event.stopPropagation()

事件委托

<body>
    <ul>
        <li><a href="javascript:;" class="cl">1</a></li>
        <li><a href="javascript:;" class="cl">2</a></li>
        <li><a href="javascript:;" class="cl">3</a></li>
        <li><a href="javascript:;" class="cl">4</a></li>
        <li><a href="javascript:;" class="cl">5</a></li>
        <li><a href="javascript:;" class="cl">6</a></li>
    </ul>
</body>

</html>
<script>
    let ul=document.querySelector("ul");
    ul.onclick=function(event){
        let tar=event.target;
        if(tar.className==='cl'){
            console.log(tar.innerText);
        }
    }
</script>
說明:li可能有多個椿胯,而且可能后期點擊按鈕添加筷登,則這
時候,如果每隔a標簽都是代碼里面設置onclick明顯不合理哩盲,這時候可以利用冒泡原理前方,在父元素上面設置監(jiān)聽點擊事件,但是本意只是a標簽能點擊廉油,可是此時li也可以點擊惠险;可以借用event.target獲取當前事件的標簽,然后通過類名等加以判斷抒线。

事件的傳播

  • 捕獲階段

    在捕獲階段時從最外層的祖先元素班巩,向目標元素進行事件的捕獲,但是默認此時不會觸發(fā)事件

  • 目標階段

    事件捕獲到目標元素嘶炭,捕獲結束開始在目標元素上觸發(fā)事件

  • 冒泡階段

    事件從目標元素向他的祖先元素傳遞抱慌,依次觸發(fā)祖先元素上的事件

1.png

事件綁定

let li=document.querySelector("li");
    li.addEventListener("click",()=>{
        alert("ceshi");
    })
    li.addEventListener("click",()=>{
        alert("ceshi1");
})
參數(shù)一:事件的字符串,不要on眨猎,例如onclick只是click
參數(shù)二:回調(diào)函數(shù)
參數(shù)三:是否在捕獲階段觸發(fā)事件抑进,需要一個布爾值,默認false

說明:如果通過onclick類似方式綁定事件睡陪,只能綁定一個寺渗,最后一個生效。此時addEventListener可以多次綁定事件兰迫,而且都會執(zhí)行信殊。
補充:回調(diào)函數(shù)內(nèi)部this指向調(diào)用者,即li

BOM

  • window:代表整個瀏覽器的窗口逮矛,同時也是網(wǎng)頁的全局對象
  • Navigator:代表當前瀏覽器的信息鸡号,通過該對象可以識別不同的瀏覽器
  • Location:代表瀏覽器的地址欄,可以獲取地址欄信息须鼎,或者操作瀏覽器跳轉頁面

location.reload(true) true代表刷新之后會清空緩存鲸伴,輸入數(shù)據(jù)都不會存在了,默認是false晋控,會保存

  • History:代表瀏覽器歷史紀錄汞窗,可以操作歷史紀錄,由于隱私原因赡译,該對象不能獲取具體的歷史記錄仲吏,只能操作瀏覽器前后翻頁
  • Screen:代表用戶的屏幕信息,通過該對象可以獲取到用戶的顯示器的相關信息
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市裹唆,隨后出現(xiàn)的幾起案子誓斥,更是在濱河造成了極大的恐慌,老刑警劉巖许帐,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件劳坑,死亡現(xiàn)場離奇詭異,居然都是意外死亡成畦,警方通過查閱死者的電腦和手機距芬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來循帐,“玉大人框仔,你說我怎么就攤上這事≈粞” “怎么了离斩?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長衷旅。 經(jīng)常有香客問我捐腿,道長,這世上最難降的妖魔是什么柿顶? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任茄袖,我火速辦了婚禮,結果婚禮上嘁锯,老公的妹妹穿的比我還像新娘宪祥。我一直安慰自己,他們只是感情好家乘,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布蝗羊。 她就那樣靜靜地躺著,像睡著了一般仁锯。 火紅的嫁衣襯著肌膚如雪耀找。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天业崖,我揣著相機與錄音野芒,去河邊找鬼。 笑死双炕,一個胖子當著我的面吹牛狞悲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播妇斤,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼摇锋,長吁一口氣:“原來是場噩夢啊……” “哼丹拯!你這毒婦竟也來了?” 一聲冷哼從身側響起荸恕,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤乖酬,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后戚炫,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體剑刑,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年双肤,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钮惠。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡茅糜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出素挽,到底是詐尸還是另有隱情蔑赘,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布预明,位于F島的核電站缩赛,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏撰糠。R本人自食惡果不足惜酥馍,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望阅酪。 院中可真熱鬧旨袒,春花似錦、人聲如沸术辐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辉词。三九已至必孤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瑞躺,已是汗流浹背敷搪。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留隘蝎,地道東北人购啄。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像嘱么,于是被迫代替她去往敵國和親狮含。 傳聞我的和親對象是個殘疾皇子顽悼,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 最近四周一直在加班蔚龙,每天晚上下班很晚,九點十點甚至半夜兩三點映胁,最早的時候可能也就是九點木羹,好多天沒有寫字了。 今天我...
    桂金閱讀 589評論 4 1
  • 將軍提筆繪山鬼解孙,刀槍劍羽滿星辰坑填, 血色夕陽映晚霞,滿地蕭瑟狼煙滾弛姜, 一襲紅衣舞翩翩脐瑰,幾人側目幾人癲, 舞盡曲終伊人...
    燈布閱讀 375評論 0 0