前言:
# 大致花了一個星期的時間把這本書認真看了半本,下面是我做的閱讀筆記,希望能讓看這本書的人有個大致的參考。目前可能寫得較亂不夠全面,後續我會整理添加。 (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中文網其他相關文章!

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

Python更适合数据科学和机器学习,JavaScript更适合前端和全栈开发。1.Python以简洁语法和丰富库生态著称,适用于数据分析和Web开发。2.JavaScript是前端开发核心,Node.js支持服务器端编程,适用于全栈开发。

JavaScript不需要安裝,因為它已內置於現代瀏覽器中。你只需文本編輯器和瀏覽器即可開始使用。 1)在瀏覽器環境中,通過標籤嵌入HTML文件中運行。 2)在Node.js環境中,下載並安裝Node.js後,通過命令行運行JavaScript文件。

如何在Quartz中提前發送任務通知在使用Quartz定時器進行任務調度時,任務的執行時間是由cron表達式設定的。現�...


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

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

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver CS6
視覺化網頁開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能