JavaScript基本知識點整理(超實用)

来源:http://www.cnblogs.com/wuhao752718372/archive/2017/11/19/7861647.html
-Advertisement-
Play Games

絮叨絮叨 今天給大家分享一下這兩天自己整理的JavaScript部分的筆記,下麵都是我覺得比較常用的,希望能幫助到大家! 1、 導入JS的三種方式 ①在HTML標簽中,直接內嵌JS。<button onclick=”func()”></button> ②在HTML頁面中使用<script></scr ...


  絮叨絮叨

                 

 今天給大家分享一下這兩天自己整理的JavaScript部分的筆記,下麵都是我覺得比較常用的,希望能幫助到大家!

 

1、 導入JS的三種方式

①在HTML標簽中,直接內嵌JS<button onclick=”func()”></button>

②在HTML頁面中使用<script></script>包裹JS代碼。<script> JS代碼 </ script >

③引入外部的JS文件。<script  language=”javascript” src=”JS路徑”></ script >

2、 JS的常用數據類型

String 字元串 “str” ‘str’

Boolean true/false   

Number 數值   

Object 對象

Null 特殊的空值          

Undefined未定義(var聲明瞭,但未賦值)

3、 常用的數值函數

isNaN()檢測是一個變數,是否是非數值。先用Number()函數嘗試轉換,如果不能轉為數值,則為NaN

Number():

  轉換任何數據類型,為數值  字元串含有其他字元,不能轉。  null -> 0

  True=1 false=0    純數值字元串=相應的數字  空字元串=0。   Undefined -> NaN

ParseInt():將字元串轉為整數類型。

  純數值=數值,會抹掉小數點   空字元串 = NaN

  包含其他字元的字元串,會截取第一個非數值字元串前面的部分

  ParseInt只能轉字元串,轉其他類型,全是NaN

4、JS中的運算符的優先順序

()  小括弧最高
 ++ -- 單目運算符
/ %  
+  -  
>  <  >=  <=  
== !=  
&&  與或同時存在時,&&比||高
||  
+= -= *= /= 最低的是各種賦值

 

5、if結構、迴圈結構、支持的判斷結果

Boolean:false  true真

String空字元串為 一切非空為真

Number 0  一切非0為真

NullUndefinedNaN 全為假  Object:全為真

6、JS中的DOM

Document.getElementById/Name/TagName/ClassName(); //取元素節點

GetAttribute(“屬性名”);  setAttribute(“屬性名”,”屬性值”); // 取到、設置屬性節點

InnerText[=“文本”] : 取到/設置 文本節點

InnerHTML[=”html代碼”]: 取到/設置 元素內部的html代碼

tagName 取到當前節點的標簽名

【修改樣式系列

.style.樣式 = “樣式”    .style.cssText = “多個CSS鍵值對”  .className=”class名”

【層次節點系列

  1 .childNodes(數組)獲取元素的所有子節點  .children

  2 .firstChild:獲取元素的第一個子節點; firstElementChild

  3 .lastChild:獲取元素的最後一個子節點; lastElementChild

  4 . parentNode:獲取當前節點的父節點;

  5 .previousSibling:獲取當前節點的前一個兄弟節點

  6 .nextSibling:獲取當前節點的後一個兄弟節點

  7 . attributes:取到所有屬性節點[數組]

【創建新增節點】

  1. .createElement(“標簽”) 創建一個節點  .setAttribute(“”,””)給新節點設置屬性
  2. 父節點.appendChild(node) 父節點最後追加新節點
  3. 父節點.insertBefore(newNode,oldNode) 在父節點的oldNode之前插入newNode
  4. 克隆節點.cloneNode(true/false);預設false:只克隆當前節點,而不克隆子節點;true:克隆所有子節點

【刪除替換節點

  1. 父節點.removeChild(childNode); 從父節點刪除子節點
  2. 父節點.replaceChild(newNode,oldNode); 用newNode替換掉oldNode

HTML-DOM 操作表格

1、表格對象

①Rows: 取到所有行對象,數組格式

②InsertRow(index); index後面插入一個新行

③DeleteRow(index); 刪除表格第index+1行;

2、對象

①Cells: 取到所有單元格對象數組格式 rowIndex:返回當前行索引;

②InsertCell(index): 在index個單元格後,插入一個新單元格;

③DeleteCell(index): 刪除index+1個單元格;

3、單元格對象

①cellIndex: 返回當前單元格索引;

②InnerTextInnerHTML:設置單元文字內容。

7、鍵盤事件&確定鍵盤按鍵

1鍵盤事件:keyDownàkeyPressàkeyUp

2長按時不斷的執行keyDownàkeyPress

  有keyDown,不一定有keyUp(當按鍵時,滑鼠將焦點點走,就沒有keyUp事件)

3確認一個按鍵的方法

Dom.keyDown = function(e){
         Var evn = e||window.event;
      Var code = evn.keyCode||evn.charCode||evn.which;
      If(code==13){  回車  }}

4判斷組合鍵原理:聲明多個組合鍵對應的標誌變數(全局變數,預設0),當按鍵keyDown時,對應的標誌變數為1;當按鍵Up時,對應的標誌變數置0;通過判斷多個標誌變數是否同時為1,進而判斷按鍵是否同時按下。

8、事件冒泡&事件捕獲&阻止預設事件

【事件冒泡

當觸發某DOM元素的事件時,如果祖先元素存在同類型事件事件會從當前元素開始,逐個往上觸發所有祖先元素的同類型事件。

>>> 如何添加事件,會導致事件冒泡

DOM0模型,均為事件冒泡;

IE中使用.attachEvent()添加的事件,均為冒泡;

其他瀏覽器,.addEventListener添加的事件,當第三個參數為false時,為冒泡;

>>> 如何阻止事件冒泡

IE瀏覽器中:將e.cancelBubble屬性設為true

其他瀏覽器:調用e.stopPropagation();方法

【事件捕獲

冒泡相反,當觸發某元素事件時,會從根節點開始,逐個向下觸發祖先元素的同類型事件直到當前DOM為止

>>> 如何產生事件捕獲:

使用addEventListner()添加事件,並且將第三個參數設置為true

【阻止各種標簽的預設事件

IE瀏覽器中:將e.returnValue屬性設為false

其他瀏覽器:調用e.preventDefault();方法

9、JS中數組的常用方法

.splice(index,num):從index開始,刪除num元素 

push(n):數組最後插入一個元素  pop():刪除數組最後一個元素

unshift(n):在數組第0插入一個元素  shift():刪除數組第一個元素 

sort([functuion]): 預設按照ASCII碼值排序,可以傳入回調函數進行排序;

升序降序排列: function(a,b){ Return a-b; //升序  return b-a;//降序 }

Reverse: 數組反轉

Join([‘分隔符’]):將數組以指定分隔符鏈接為字元串,不填預設用,

Concat(arr1,arr2,[arr3,[arr4,[……]]]):鏈接多個數組(如果數組為多維數組,第一層[])

indexOf(n):查詢元素在數組的第一個下標 lasrIndexOf(n):查詢元素在數組最後一個下標

slice(begin,end); 截取數組begin開始,到end的子數組,左閉右開

10、Number類常用方法

.toString():轉為字元串 相當於num+””

.toFixed(n):將數字轉為字元串,保留n位小數,四捨五入

.valueOf():返回Number對象的基本數字值

11、String類常用方法

.split(“char”); 將字元串通過指定字元分割數組;如果傳入””,則將所有字元放入數組;

.indexof(char): 查詢某個字元,在字元串的下標;  

.charAt(index): 截取字元串的第index個字元

. substring(begin,end):截取字元串從begin開始,到end的子串。左閉右開

.replace(old,new):將字元串old部分子串,替換為new(如果old是字元串,只替換第一個符合要求的子串;如果old是正則,則按照正則要求替換 //g ,替換全局)

.toLowerCase() 所有字元轉為小寫;

.toUpperCase() 所有字元轉為大寫;

12、Date類常用方法

.getFullYear(): 獲取4位年份

.getMonth(): 獲取月份 0~11

.getDate(): 獲取一月中的某一天 1~31

.getDay(): 獲取一周中的某一天 0~6

.getHours() 返回 Date 對象的小時 (0 ~ 23)

.getMinutes() 返回 Date 對象的分鐘 (0 ~ 59)

.getSeconds() 返回 Date 對象的秒數 (0 ~ 59)

13、 正則表達式的聲明

① 字面量聲明:  /[正則表達式]/[表達式模式g/i/m]

② new關鍵字實現:var reg = new regExp(“正則表達式”,”表達式模式”);

[表達式模式]:

  g:全局匹配。預設只匹配第一項符合要求;

  i: 忽略大小寫。預設要求大小寫一致;

  m:多行匹配。(當字元串分為多行時,多行匹配預設,會有多個開頭結尾。預設,一個字元串不管分多少行,只有一個開頭一個結尾。)

14、正則表達式的常用規則

匹配的數據:

  /d 數字0-9 相當於[0-9]   /D 非數字0-9 相當於[^0-9]

  /w 字母、數組、下劃線 [0-9a-zA-z_]  /W 非字母、數字、下劃線 [^0-9a-zA-z_]

  /s  任何空字元   /S 非空字元  . 除了換行符的任意字元

特殊符號:

  [] 需要匹配的數據  () 分組,使用|的時候進行分組

  | 或,兩邊都可以。預設從頭到尾分兩塊,如果用(a|b),則只匹配()裡面部分

  ^ 在[]內部,表示整個[]內部取非;在正則表達式開頭,表示整個字元串的開始;

  $ 表示整個正則模式的結束。

匹配次數:

  {} 表示匹配前面部分的次數。 {3,5} 3-5次  {3,} 3或多次 {3} 匹配3次

  ? 匹配前面部分0-1次   +: 1或多次  *:匹配任意次數

15、JS中的面向對象和麵向過程

面向過程是指專註於如何去解決一個問題的過程步驟。

面向對象是指專註於由哪一個對象來解決這個問題。

16、面向對象的三大特征

繼承、封裝、多態

17、什麼叫封裝?

封裝分為方法的封裝和屬性的封裝

方法的封裝是指將類內部的函數進行私有化處理,不對外提供調用介面,無法在類外部使用

屬性的封裝是指將類中的屬性進行私有化處理,對外不能直接使用對象名訪問,而是提供set/get方法,讓外部使用set/get方法,來對屬性進行操作

18、JS中的this指向問題

總的來說,就是誰最終調用函數,this就指向誰!

This指向的規律:

  ①通過函數名()調用的,this永遠指向window

  ②通過對象.方法調用的,this指向這個對象

  ③函數作為數組的一個元素,用數組下標調用的,this指向這個數組

  ④函數作為window內置函數的回調函數(setTimeout,setInterval)使用,this指向window

  ⑤函數作為構造函數,使用new關鍵字聲明,this指向新new出的對象

19、什麼叫做繼承?實現繼承的幾種方法?

繼承:使用一個子類,繼承另外一個父類,那麼子類就可以自動擁有父類的所有屬性和方法

①通過擴展object實現繼承

②使用原型實現繼承

③使用call、apply、bind實現繼承

通過擴展object實現繼承:

通過迴圈,將父類對象的所有屬性和方法,全部賦給子類對象。關鍵點在於for-in迴圈,及時不擴展object,也能通過簡單的迴圈實現操作

使用原型實現繼承:

將父類對象,賦值給子類的prototype,那麼父類對象的屬性和方法就會出現在子類的prototype中。那麼,實例化子類時,子類的prototype又會到子類對象的__proto__中,最終,父類對象的屬性和方法,會出現在子類對象的__proto__對象中。

使用call、apply、bind實現繼承:

通過函數名調用這三個函數,可以強行將函數中的this指定為某個對象

20、什麼叫做閉包?

在函數內部,定義一個子函數,子函數可以訪問父函數的私有變數。可以在子函數中進行操作,最後將子函數return返回

 

今天就給大家分享到這兒吧~~~JS中常用的知識點基本都概括了,大家如果覺得寫的不詳細的話,可以查看菜鳥教程或者查看幫助文檔,有什麼不足的地方請大家留言~~~謝謝大家了~~


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 單行overflow: hidden;text-overflow: ellipsis;white-space: nowrap; 多行(相容各個瀏覽器)//通過覆蓋最後幾個字的形式p{ position:relative; line-height:1.4em; height:4.2em;/* 3 倍l ...
  • 蒼蒼之天不得久視,堂堂之地不得久履 當你小心翼翼的開啟服務端渲染的同時,一個問題不得不註意,使用記憶體模式去保存渲染過的頁面,這樣服務斷掉重啟後,緩存也沒有了,所以這裡我們使用mongdodb進行本地化存儲 讀在最前面: 1、本文主題:使用mongodb 進行 預渲染的本地化緩存服務 2、主機環境為W ...
  • 一,在項目中引入jquery-easyui 二,靜態資源映射 1)<mvc:resources mapping="/jquery-easyui-1.5.2/**" location="/easyui/" /> 三,頁面配置 1)在head中引入: <link rel="stylesheet" typ ...
  • 一,下載地址:http://ueditor.baidu.com/website/download.html 1)根據需要下載相應版本 例 Java:選擇jsp+utf-8; 二,放置在項目中 1)解壓下載文件,並重命名為editor; 2)複製文件放置在項目webapp目錄下; 3)把editor目 ...
  • 在學習廖雪峰前輩的JavaScript教程中,遇到了一些需要註意的點,因此作為學習筆記列出來,提醒自己註意! 如果大家有需要,歡迎訪問前輩的博客https://www.liaoxuefeng.com/學習。 比較運算符 當我們對Number作比較時,可以通過比較運算符得到一個布爾值,這是我們預期的結 ...
  • 在學習廖雪峰前輩的JavaScript教程中,遇到了一些需要註意的點,因此作為學習筆記列出來,提醒自己註意! 如果大家有需要,歡迎訪問前輩的博客https://www.liaoxuefeng.com/學習。 JavaScript的字元串就是用 ' ' 或者 “ ” 括起來的字元表示。 如果字元串內部 ...
  • Vue2.0和1.0實現路由的方法有差別,現在我用Vue 2.0實現路由跳轉,話不多說,直接上代碼 HTML代碼 main.js 代碼 ...
  • Point類除了構造方法,還定義了一個toString方法。註意,定義“類”的方法的時候,前面不需要加上function這個關鍵字,直接把函數定義放進去了就可以了。另外,方法之間不需要逗號分隔,加了會報錯。 Point類除了構造方法,還定義了一個toString方法。註意,定義“類”的方法的時候,前 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...