JavaScript高階程式設計介紹
前言:
# 大致花了一個星期的時間把這本書認真看了半本,下面是我做的閱讀筆記,希望能讓看這本書的人有個大致的參考。目前可能寫得較亂不夠全面,後續我會整理添加。 (2017-7-17)
第一章 JavaScript簡介
#第二章 HTML中使用JavaScript
第三章 基本概念
3.1.語法
區分大小寫
#標識符(建議用駝峰大小寫myCar)
註解// /**/
嚴格模式(use strict)
語句 建議var diff-a-b;要用分號,以及 if( test ) { alert(test); }一句話也要用{}
#
3.2 關鍵字和保留字
3.3 變數
未初始化undefined var message = “hi”; message = 100; 型別隨便換
Function test(){ Var a = “hi”; 局部 b = “hi”; 全局 }
Test(); alert(a); 錯誤 alert(b); hi
3.4 資料類型
typeof
Undefined (定義但未被賦值)
Null(空物件指標)
Boolean(布林值true false 流程控制語句會自動執行對應boolean 轉換)
Number
(八進位0 十進位 十六進位0x 浮點數值數值範圍NaN 數值轉換Number parseInt )
String(字串,單雙引號沒區別,轉義序列,字串特點,toString String)
Object(對象所有物件的基礎var o = new Object();)
函數在ES是對象,不是一種資料型別。
3.5運算子
#一元運算子 ++ -- 、 + -(可用來轉換資料型別)
#
位元運算子 位元非~num1 位元與& 位元或##| 位元異或^ 左移<< 右移>> 無符號右移>>
#布林運算子 ! && || 乘運算子* / % 加性運算子##+ - 關係運算子< > <= >=
##相等運算子
== != === !==條件運算子? :
賦值運算子
= *= /= %= += -= <<= >>= > >=逗號運算子 3.6
語句
# 3.7
函數
arguments
沒有重載##
#第四章變數、作用域與記憶體問題
4.1 基本型別與參考型別的值
動態的屬性 (
引用型別能動態地加入屬性)複製變數值 (
基本型別是不同的空間,參考類型是引用相同的空間)傳遞參數 (
相同) # 偵測類型 (typeof instanceof) # 4.2執行環境與作用域 #作用域鏈結 延長作用域鏈結(try-catch with) 沒有區塊層級作用域(if for 宣告變數查詢識別碼) 4.3垃圾收集 策略(標記清除引用計數) 效能問題 管理記憶體 # 5.1 Object類型 Var person = {};(適合給函數傳入大量參數) var parson = new Object(); # Person[“name”](使用變數來代表屬性時用) person.name(推薦) # #5.2 Array 類型 Var colors = new Array(); var colors = Array(); var colors =[*****]; Colors[*] = *****; colors.length 偵測陣列: instanceof Array.isArray() 轉換法: toString() valueOf() toLocaleString() join()
##家字家方法:
##' ## push() pop() #佇列方法: shift() unshift() #重新排序方法: reverse() sort( concat()原沒變新增 slice() 原變了可刪除可添 位置方法: indexOf() lastIndexOf() #迭代方法:every() filter() forEach() map() some() # reduce() reduceRight() 5.3 Date New Date() 裡面 parse(“May 25,2004”) UTC(2005,0) Date.now() RegExp實例方法:exec() 擷取群組(擷取多組符合項目) text() 一次看是否符合 RegExp建構子屬性:有點多,用來看最近一次符合的相關訊息 模式的限制:缺少某些語言(Perl)所支援的高階正規表示式特性,但是絕大多數情況夠用 5.5 Function類型 函數是物件(也是#Function#的實例),函數名稱是指標。 function sum(num1,num2) { } Var sum = function(num1,num2){ }; 沒有重載:函數是對象,函數名稱是指標。 函數宣告與函數表達式:function ******* 函數宣告提升 var sum = ** ***** 不會提升 函數內部屬性:arguments物件# (屬性callee指向函數) this物件( #指向函數執行的環境物件) 屬性caller (指向呼叫目前函數的函數,如果是全域作用域的函數則值為null) 函數屬性與方法: # 屬性(length宣告參數個數 prototype繼承) 非繼承方法: call( ) apply() bind() a.apply( b, c); a.call( b, d ); '
盤'> b a ,順便給a傳入參數c( argument ) # Var a = b.bind(c); a 是在c 5.6基本包裝類型:# Boolean 1.字元方法:charAt()或string[] 傳回對應字元 #charCodeAt() 傳回對應字元編碼 2.字串操作方法: 或+運算子和陣列的concat()#看起來一樣 截斷字串,三個很靈活 字串位置方法:indexOf( ) lastIndexOf() 方法 刪除前置及後綴的所有空格 trimLeft() trimRight() 經典方法 特定地區 這種更穩健 和RegExp的exec()本質一樣傳回符合到字串的陣列 傳回第一個符合項目的索引否則回傳-1 符合且取代字串 符合分隔符號產生陣列 比較兩個字串 靜態方法 將多個字元編碼變成字串 方法 例如big() string #凱希; 單體內建物件 物件 編碼方法: encodeURI() 整個 encodeURIComponent() 某一段 編碼 decodeURI() 整個 某一段 # eval()方法 非常強大且非常危險 #Global 物件的屬性 undefined、 ##都是屬性 Web瀏覽器是將全域物件作為window 物件的 物件 物件的屬性 一些特殊值例如π 方法 #捨去方法:小數值變整數 Math.ceil(25) 進一 Math.floor(25) 退一 #Math.round(25) 四捨五入 #random()方法 [0,1) 之間的隨機數字 其它方法 太多看書 #6.1理解物件 # 6.1.1屬性類型: #資料屬性:4個特性 存取器屬性:不包含資料值 4個特性透過Object.defineProperty()##定義 6.1.2 Object.defineProperties() 可以是資料屬性,也可以是存取器屬性。 6.1.3 Object.getOwnPropertyDescriptor()## 建立物件 工廠模式 (
# #看書)
6.2.2建構子模式(看書
new constructor ) #6.2.3原型模式: 原型與 運算子( in for-in ) ## 3. ( ) 4. ( ) 5.原生物件的原型( 就是用原型模式,可以定義新方法在裡面,但不推薦#) # 6.原型物件的問題:沒有屬於實例自己的屬性 6.2.4 6.2.7穩健建構函數模式 #跟寄生建構子模式有類似處,但不用this和new。 instanceof也偵測不出 6.3繼承
# 6.3.1 1. Object 2. instanceof isPrototypeOf() 3.謹慎地定義方法:必須在實例替換原型之後才能定義新的方法。 4.原型鏈的問題: 原型外的屬性也給了繼承 #在創造子類型的實例時,不能傳遞參數給超類型的建構子。 很少是單獨使用。 6.3.2 call或 也很少單獨使用。 6.3.3 # 原型鏈實作 原型屬性和方法的繼承 對實例屬性的繼承## ##6.3.4原型式繼承(看書) 沒有用到建構子 保持型別可以用,但是會跟原型模式一樣共用參考型別的屬性。 6.3.5 #(看書#) #6.3.6 #第七章 函數表達式 7.1遞迴 嚴格模式不能用 arguments.callee 可以用命名函數表達式。 7.2閉包:有權存取另一個函數作用域中的變數的函數 自我總結:閉包是函數,一般用匿名函數 #1.閉包可以存取傳回外部函數中的變數。 2.另一個函數的活動物件會被保存,直到閉包的作用域連結被銷毀。 7.2.1閉包與變數 例如在for迴圈中,則會出現不如意的情況。 關於this物件
##。 this 7.2.3記憶體洩漏 # 使用閉包,確保正常回收記憶體 7.3 用匿名自執行函數來模仿。 自我總結作用: #1.內部執行完就會被摧毀。 2.匿名自執行函數可以減少污染全域方法和屬性。 閉包就有一個記憶體的問題,用這個結合很舒適。 7.4私有變數 物件上的都是公有的 ( # 在建構子中建立 -------- 建構子 #this.****** = function(){ **** }; 增進了程式碼的重複使用性,但是每個實例沒有自己的私有變數。 (因為這個叫靜態私有變數) 使用實例變數,還是靜態私有變數,看特定需求。 7.4.2模組模式 字面量 一個實例物件 ( ) 在匿名函數內部定義私有變數和方法,然後將一個物件字面量作為函數的回傳值。 7.4.3 必須是某種類型的實例,同時也必須加入某些屬性或方法。 第五章 #參考類型
第六章 #物件導向的程式設計
(閱讀)##
組合繼承有問題:呼叫了兩次超類型的建構函數,導致實例和原型中重複了屬性。 寄生組合式繼承解決了這個問題,成為了最理想的繼承範式。
以上是JavaScript高階程式設計介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

人臉偵測辨識技術已經是一個比較成熟且應用廣泛的技術。而目前最廣泛的網路應用語言非JS莫屬,在Web前端實現人臉偵測辨識相比後端的人臉辨識有優勢也有弱勢。優點包括減少網路互動、即時識別,大大縮短了使用者等待時間,提高了使用者體驗;弱勢是:受到模型大小限制,其中準確率也有限。如何在web端使用js實現人臉偵測呢?為了實現Web端人臉識別,需要熟悉相關的程式語言和技術,如JavaScript、HTML、CSS、WebRTC等。同時也需要掌握相關的電腦視覺和人工智慧技術。值得注意的是,由於Web端的計

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

股票分析必備工具:學習PHP和JS繪製蠟燭圖的步驟,需要具體程式碼範例隨著網路和科技的快速發展,股票交易已成為許多投資者的重要途徑之一。而股票分析是投資人決策的重要一環,其中蠟燭圖被廣泛應用於技術分析。學習如何使用PHP和JS繪製蠟燭圖將為投資者提供更多直觀的信息,幫助他們更好地做出決策。蠟燭圖是一種以蠟燭形狀來展示股票價格的技術圖表。它展示了股票價格的

隨著網路金融的快速發展,股票投資已經成為了越來越多人的選擇。而在股票交易中,蠟燭圖是常用的技術分析方法,它能夠顯示股票價格的變動趨勢,幫助投資人做出更精準的決策。本文將透過介紹PHP和JS的開發技巧,帶領讀者了解如何繪製股票蠟燭圖,並提供具體的程式碼範例。一、了解股票蠟燭圖在介紹如何繪製股票蠟燭圖之前,我們首先需要先了解什麼是蠟燭圖。蠟燭圖是由日本人

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

js和vue的關係:1、JS作為Web開發基石;2、Vue.js作為前端框架的崛起;3、JS與Vue的互補關係;4、JS與Vue的實踐應用。
