從頭開始 JavaScript

入門篇


JS:是一種解釋性的弱類型腳本語言,用來給HTML網頁增加動態功能

JavaScript語句是發給瀏覽器的命令。這些命令的作用是告訴瀏覽器要做的事情。

在 JavaScript 中,對象是擁有屬性和方法的數據(JavaScript 中的所有事物都是對象:字符串、數字、數組、日期,等等。[一切事物皆對象]

屬性是與對象相關的值

方法是能夠在對象上執行的動作(事件)

JS 組成部分

1、ECMAScript:核心、擔當的是一個翻譯的角色;是一個解釋器,幫助計算機來讀懂我們寫的程序

2、DOM:文檔對象模型;文檔指的就是網頁;把網頁變成一個JS可以操作的對象

3、BOM:瀏覽器對象模型;給了JS操作瀏覽器的能力


數據類型

原始類型:5種

number(數值), string(字符串), boolean(true、false),null, undefined

對象類型(引用類型):

如 Object、Array 、Date、Function


變量:用來存儲信息的容器

我們可以把變量看做是 存儲數據的容器(我們可以把變量看做一個盒子,盒子用來存放物品,var就相當于找盒子的動作)

定義變量使用關鍵字var,語法如下:var變量名(var num = 12;)

變量名可以任意取名,但要遵循命名規則:

1.變量必須使用字母、下劃線(_)或者美元符($)開始。

2.然后可以使用任意多個英文字母、數字、下劃線(_)或者美元符($)組成。

3.不能使用JavaScript關鍵詞與JavaScript保留字。

變量可以先聲明再賦值,也可以重復賦值

作用域:變量能夠起作用的范圍

全局變量:其作用域是整個源程序,它不屬于哪一個函數

局部變量:作用域僅限于函數內, 離開該函數后再使用這個變量是非法的。

函數內部可以直接讀取全局變量,函數外部無法讀取函數內部的局部變量

函數內部聲明變量時,一定要使用var命令,如果不用,實際上就聲明了一個全局變量

(注意:從函數外部讀取局部變量的方法,在函數的內部再定義一個函數)


函數作用域和塊級作用域

塊級作用域({}稱之為一塊)指的是定義在條件或循環分支中的

JavaScript函數沒有塊級作用域

函數作用域:變量在定義的函數內及嵌套的子函數內處處可見;

塊級函數域:變量在離開定義的塊級代碼后馬上被回收。


confirm消息對話框通常用于允許用戶做選擇的動作,如:“你對嗎?”等。彈出對話框(包括一個確定按鈕和一個取消按鈕)。

prompt彈出消息對話框,通常用于詢問一些需要與用戶交互的信息。

彈出消息對話框(包含一個確定按鈕、取消按鈕與一個文本輸入框)。

打開新的窗口 ?window.open('路徑地址','_blank','height=600,width=400,top=100,left=0'); 可以設置它的工具條滾動條狀態欄

關閉本窗口? window.close();關閉指定窗口? <窗口對象>.close();

進階篇


文檔對象模型 DOM(Document Object Model)定義訪問和處理HTML文檔的標準方法。DOM 將HTML文檔呈現為帶有元素、屬性和文本的樹結構(節點樹)。

HTML文檔可以說由節點構成的集合,DOM節點有:

1.元素節點

2.文本節點

3.屬性節點:元素屬性,如標簽的鏈接屬性。

var el = document.getElementById('');? 是通過ID獲取

var el =document.getElementsByName(''); 是通過name獲取

var el =document.getElementsByTagName(''); 是通過標簽名獲取

復選框全選思路:1.先用getElementsByTagName獲取input的標簽名 2.for循環 3.if判斷 如果type=="checkbox",就讓它全部選中

var mylist = document.getElementById("tcon");

document.write(mylist.parentNode.parentNode.parentNode.lastChild.innerHTML);

上邊是 獲取id為tcon的元素 ,打印它的祖父節點(父節點的父節點的父節點)的最后一個節點的HTML



var、let、const聲明變量

1、var:聲明全局變量,能重復聲明覆蓋,會出現變量提升的情況

2、let:聲明局部變量,限制了變量的作用域,保證變量不會去污染全局變量,不會出現變量提升

(注意:必須聲明'use strict'后才能使用let聲明變量,否則瀏覽并不能顯示結果)

3、const:聲明常量(也具有塊級作用域 ),一旦定義就不可改變

定義那些不可以被重新賦值的變量

ES6中,let、const在任何情況下都優于var,所以不建議使用var


函數:由事件驅動的或者當它被調用時執行的可重復使用的代碼塊。

1、函數聲明? ? function fn (){}? ? ? ? 【 fn:function(){} 】

會被解析器自動提升到代碼的頭部,違背了函數先定義后使用的要求。這里的函數名fn是必須要有的

2、函數表達式(命名式函數)? var a = function fn(){};

3、自運行函數 (function fn (){})();? 用于存放開發插件的代碼

函數這么定義的原因就是為了封閉作用域而不至于污染其他文件

4、匿名函數? 不能直接聲明、需要賦值調用

window.onload=function(){}

var say = function(){}


jQuery(function(){ })與(function(){ })(jQuery)

jQuery(function(){ }) ;用于存放操作DOM對象的代碼,執行其中代碼時DOM對象已存在。不可用于存放開發插件的代碼,因 為jQuery對象沒有得到傳遞,外部通過jQuery.method也調用不了其中的方法(函數)。

(function(){ })(jQuery)用于存放開發插件的代碼,執行其中代碼時DOM不一定存在,所以直接自動執行DOM操作的代碼,請小心使用。


原型 ? prototype和__proto__

顯式原型:prototype 是函數的一個屬性(每個函數都有一個prototype屬性),這個屬性是一個指針,指向一個對象。它是顯示修改對象的原型的屬性、返回的是對象的類的原型

隱式原型:__proto__? 是一個對象擁有的內置屬性(請注意:prototype是函數的內置屬性,__proto__是對象的內置屬性),是JS內部使用尋找原型鏈的屬性,用于調試

用chrome和FF都可以訪問到對象的__proto__屬性,IE不可以。


this

this指當前對象

1、在函數外使用,this指向window

2、在函數內使用

(1)函數直接被調用

(function fn(){console.log(this)})();

(2)被事件所調用,并且以賦值的形式出現(這兩個條件缺一不可)

誰調用了函數,this就指向誰


AJAX請求

$.ajax({

? ? ? type: 'GET', ? ? ? ? ? ? ?// 這是請求的方式 可以是GET方式也可以是POST方式, 默認是GET

? ? ? url: ' xxx.php ', ? ? ? ? ?// 這是請求的連接地址 一般情況下這個地址是后臺給前端的一個連接,直接寫就可以

? ? ? dataType: 'json', ? ? ? // 這是后臺返回的數據類型 一般情況下都是一個json數據, 前端遍歷一下就OK

? ? ? data: { ? ? ? // 要傳遞的參數? 'xxx' : 'xxx', },

? ? ? success: function (data) { // 發送請求成功后開始執行,data是請求成功后,返回的數據 },

? ? ? error: function (xhr, textStatus, errorThrown) { ? ? ? //? 請求失敗后就開始執行,請求超時后,在這里執行請求超時后要執行的函數 }

? ? ? async: true, ? ? ? ? ? ? ? // 默認為true,默認為true時,所有請求均為異步請求,如果需要發送同步請求,需設置為false,

? ? ? timeout: 8000, ? ? ? ? ?// 設置請求超時時間(毫秒)。此設置將覆蓋全局設置

? ? ? beforeSend: function () { ? ? ? // 在發送請求前就開始執行 (一般用來顯示loading圖)? },

? ? ? complete: function () { ? ? ? //當請求完成后開始執行,無論成功或是失敗都會執行 (一般用來隱藏loading圖) },

}).done(function () { ? ? ?// 這個函數是在ajax數據加載完之后,對數據進行的判斷,在涉及到對ajax數據進行操作無效時,在這個函數里面寫是可以起到效果的

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,908評論 6 541
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,324評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,018評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,675評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,417評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,783評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,779評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,960評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,522評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,267評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,471評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,009評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,698評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,099評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,386評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,204評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,436評論 2 378

推薦閱讀更多精彩內容

  • 工廠模式類似于現實生活中的工廠可以產生大量相似的商品,去做同樣的事情,實現同樣的效果;這時候需要使用工廠模式。簡單...
    舟漁行舟閱讀 7,804評論 2 17
  • @轉自GitHub 介紹js的基本數據類型。Undefined、Null、Boolean、Number、Strin...
    YT_Zou閱讀 1,184評論 0 0
  • 贛湘兩省池氏五修族譜 [不分卷] 民國10[1921]年五修. 存6冊 : 圖像, 世系表. 注: 本譜不全, 不...
    云家譜閱讀 654評論 0 0
  • 爸媽是矛,我們是盾,在一起,全是矛盾。 矛盾一,很不幸,基因突變,我是個蝸牛。 爸媽,是同一類不同種的神奇動物,不...
    小小師弟閱讀 422評論 0 2
  • 大早上一直做夢 卻被大家討論下雪而驚醒 這次的雪是今年第二次下雪 卻是挺大的 上課前陰差陽錯的 就剩我倆了 她去廁...
    Lucky黑girl閱讀 247評論 0 0