本文目錄一覽:
- 1、我覺得javascript很難理解,很難概括,鬱悶吶~~
- 2、JavaScript的window.Open()參數問題
- 3、javascript閉包問題,閉包只能取的包含函數中任何變量的最後一個值
- 4、在javascript中,為什麼“true”==true的結果是false?
- 5、Node.js高級編程
我覺得javascript很難理解,很難概括,鬱悶吶~~
對於JS一些基於類或對象的知識,建議去看Javascript高級程序設計,我看了之後覺得很有幫助.
原型換個說法,可以理解為”後綁定”,即類定義完後,為該類添加新的屬性或修改該類的屬性,
並且原型可以更改JS內置的類,比如String:
String.prototype.trim = function(){
//去除左右空格
}
這樣就為所有的字符串添加了一個trim方法,調用:” 字符串 “.trim()即可
個人學習建議,將javascript高級程序設計的例子自己手寫並運行一遍,你就會有比較深刻的感覺了…
至於對做J2EE開發或是其它語言的開發沒有太多關係,因為JS是客戶端解釋執行的,而JAVA等其它語言是服務器端執行的.
JavaScript的window.Open()參數問題
_blank 表示新開一個窗口,_parent表示父框架窗口,_self表示覆蓋該窗口,xxx表示覆蓋名字為xxx的窗口(每個窗口都可以給他命名)
javascript閉包問題,閉包只能取的包含函數中任何變量的最後一個值
就給for()裡面的循環變量i都都已參數的 形式傳進去 就ok了 (function(){})(i)
在javascript中,為什麼“true”==true的結果是false?
這屬於js語言的語法範疇
有些高級編程語言 會默認 字符串true 和 1 還有數字 1 為真
js中只 默認字符串1 和數字1為真 而字符串ture不會認為是真
所以判斷是假
Node.js高級編程
Nodejs可以做什麼
Natives modules
Nodejs更適用於IO密集型高並發請求
使用JS實現高效可伸縮的高性能Web服務
常用api
Buffer緩衝區,Buffer讓JavaScript 可以操作二進制
IO行為操作的就是二進制數據
流操作配合管道實現數據分段傳輸
Nodejs中Buffer是一片內存空間
自定義Buffer之split
實現對Buffer拆分
FS是內置的核心模塊,提供文件系統操作的API
文件讀寫與拷貝操作
文件操作API
文件打開與關閉
readFile,writeFile將文件一次性讀取與寫入,對於大體積的文件不合理。需要一種邊讀邊寫的操作方式
大文件讀寫操作
文件拷貝自定義實現
優化處理
promise寫法
CommonJS規範主要應用於Nodejs
CommonJS規範起初是為了彌補JS語言模塊化缺陷
CommonJS規範定義模塊的加載是同步完成
Nodejs與CommonJS
模塊分類
加載流程
緩存優先原則
nodejs事件管理 通過EventEmitter類實現事件統一管理
events與EventEmitter
定義對象間一對多的依賴關係
訂閱者將想要訂閱的事件監聽註冊在調度中心,事件被觸發的時候,發布者將事件發布在調度中心,之後調度中心統一調度之前訂閱者註冊的事件
發布訂閱要素
完整事件環執行順序
在瀏覽器下有兩個任務隊列,宏任務,微任務
在nodejs中有六個事件隊列。
Nodejs誕生之初就是為了提高IO性能
文件操作系統和網絡模塊實現了流接口
Nodejs中的流就是處理流式數據的抽象接口
流處理數據的優勢
Nodejs內置了stream,它實現了流操作對象
nodejs中流的分類
可寫流
用於消費數據的流
自定義可寫流
可寫流數據
自定義雙工流
自定義轉換流(中間可以對數據進行轉換操作,可讀與可寫流之間是打通的)
nodejs的stream已經實現了可以保證數據平滑流動的背壓機制(pipe方法)
文件讀取速度大於寫入速度,緩存大小有限。可能會導致內存溢出,GC頻繁調用,其它進程變慢
writeStream文件可寫流簡易實現
Net模塊實現了底層通信接口
通信過程
http靜態服務實現httpServer
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/219937.html