當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
原生JS总结
原生JS
- 第一章
- 第二十章
- 第二十一章 函數進階
- 第二十二章 函數的三種定義與四種調用
- 第二十三章 對象進階
- 第二十四章 回調函數
- 第二十五章 JS之瀑布流
- 第二十六章 構造函數與普通函數
- 第二十七章 公私有變量及鏈式作用域
- 第二十八章 閉包
- 第二十九章 cookie與存儲
- 第三十章 cookie局限性與其他存儲方式
- 第三十一章 cookie與session小結
- 補充
第一章
1.JS是一種編程語言,主要生成一些特效,完成用戶和頁面的交互2.引入:內部腳本外部腳本<script type ="text/javascript" src=""> </script>瀏覽器內核:渲染引擎 JS引擎第二十章
第二十一章 函數進階
1.函數定義1> 函數聲明定義:function 函數名(參數){代碼塊}2>函數表達式定義:沒有函數標識符,即匿名式函數表達式(可綁定變量,事件)var 函數名 = function(參數){代碼塊}有函數標識符,即命名式函數表達式var 函數名 = function 函數標識符(參數){代碼塊}函數名();函數標識符的局限性:調用命名式函數表達式時,用函數名+()調用,函數標識符只是一個標識符,不能調用函數函數標識符只有在函數作用域中有效,在外面無效函數聲明定義與函數表達式定義區別:聲明定義函數時,產生聲明提升表達式定義函數時,不會產生聲明提升3>構造函數法定義:var 變量 = new Function("形參1","形參2","方法體")2.void:對給定的表達式進行求值,然后返回undeifedeg:var = void 0;<a href="javascript:void(0)"></a>3.call和apply相同之處:調用一個對象的一個方法不同之處:接收的參數不一樣,call把參數按順序傳遞,apply把參數放在數組里傳遞4.匿名函數:也叫入函數優先表達式:(function(){} ())函數字面量:(function(){}) ()特點:1> 不會污染全局對象2>定義和調用合為一體第二十二章 函數的三種定義與四種調用
三種定義1> 函數聲明定義,有聲明提升,不會自執行,而調用2> 函數表達式定義匿名式函數表達式命名式函數表達式3> 構造函數定義四種調用和this指向1> 函數模式調用:this只想window2> 方法模式調用:this指向調用它的對象3> 構造函數模式調用:this指向新創建的對象4> apply調用:this指向apply()里的對象,如果apply()沒有參數,則指向window第二十三章 對象進階
創建對象的幾個方法:1.字面量/自定義創建對象1> 先聲明,后添加2> 聲明時添加2.原生構造函數形式創建對象eg:var obj = new Object();obj.name = "呵呵"3.工廠模式創建對象4.自定義構造函數創建對象自定義構造函數創建對象與工廠模式創建對象相比的特點:1> 函數首字母為大寫2> 有new操作符3> 沒有return語句4> 可以使用instanceof檢測操作符檢測對象類型5> 沒有顯式的創建對象,而是直接將屬性和方法賦給了this對象第二十四章 回調函數
回調函數式一個函數,它作為個傳參傳遞給另一個函數,并在主函數完成后執行回調與同步,異步沒有直接的關系,可以有同步回調,也可以有異步回調回調函數類型:1.DOM事件回調函數→同步回調2.定時器回調函數→異步回調回調函數的參數:1.可以沒有參數2.有參數,則回調函數的參數作為與回調函數同等級的參數進行傳遞1> 參數寫在主函數里2> 參數寫在回調函數里第二十五章 JS之瀑布流
談談你對瀑布流的了解瀑布流是一種布局,視覺表現為參差不齊的布局,隨著頁面滾動條向下滾動,可以不斷加載數據瀑布流特點1.布局:呈現出等寬不等高,參差不齊排序2.隨著頁面滾動條向下滾動,可以不斷加載數據,無限加載瀑布流的應用案例:high購 蘑菇街 京東實現瀑布流的方式有哪些?有什么優缺點1.原生JS:效率高,兼容好,邏輯要求高2.JQ:開發效率高,運行速度快3.C3:開發效率高,兼容不好從瀑布流的特點出發,瀑布流的底層實現原理分為兩部分,分為'頁面布局'和'圖片加載'功能
第二十六章 構造函數與普通函數
原生構造函數語法格式var x = Function('x','y',alert(x+y)')自定義構造函數語法格式function Person(name,age){this.name = namethis.age = age}原生構造函數應用1.通過原生構造函數形式創建數組var arr = new Array()2.通過原生構造函數形式創建對象var obj = new Object()3.通過原生構造函數形式創建時間var ddate = new Date()4.通過原生構造函數形式創建字符串var str = new String()函數聲明定義和函數表達式定義的函數,在調用時有區別嗎?簡單闡述函數聲明定義的函數可以在聲明之前調用,因為有函數聲明的提升函數表達式定義的函數只能在聲明之后調用函數表達式定義函數分為兩種,有區別匿名函數表達式和命名式函數表達式區別:匿名式函數表達式沒有函數標識符命名式函數表達式有函數標識符call和apply區別:相同之處:調用一個對象的一個方法不同之處:call把參數按順序傳遞 apply把參數放在數組里傳遞第二十七章 公私有變量及鏈式作用域
私有變量:私有的變量外部無法訪問公有變量:外部都可以訪問eg:function Person(){var name = "熊大"; //私有內部變量this.age = 20;}var person = new Person();console.log(person,age); => 20console.log(person.name); =>undefined私有函數:外部無法執行公用函數:外部都可以訪問執行全局變量越多越好嗎?為什么?不好,從變量的生命長度去考慮,全局變量直到頁面關閉才釋放掉所占用的內存,所以全局變量越多占用內存越多性能越差,腳本運行速度越慢,所以"全局變量是魔鬼"特權方法:如果想在函數外部訪問私有變量或私有函數,可以通過構造特權方法變量的鏈式作用域:父對象的所有變量,對子對象都是可見的,反之不成立第二十八章 閉包
概念:有權訪問另一個函數作用域中變量或私有函數,可以通過構造特權方法類型:閉包是函數作用:訪問另一個函數作用域中的變量原理:通過匿名式函數把局部變量主流在內存里,可以減少全局變量的使用優點:封裝性,減少了全局變量使用頻率,減少污染缺點:由于閉包作用域中返回的局部變量資源不會被立即回收,所以可能會占用更多內容,會導致卡頓解除引用:btn = null;第二十九章 cookie與存儲
cookie的格式:name = value; [expires = date];[path = path];[domain = domain];[secure]寫入cookie:document。cookie = "user = 熊大"編碼:encode URI Component解碼:decode URI Comronent設置時間:var date = new Date()date.setDate(date.getDate()+T);document.cookie = "user =" + encode URI Component("熊大")+";expires = "+date"alert(decode URI Component(docunment.cookie));手動清理cookie:1.date.setDate(date.getDate()-1)2.date = new Date(0)第三十章 cookie局限性與其他存儲方式
cookie局限性:1.數量限制:20個2.清理方式:每個瀏覽器都會清理,方式不一樣3.大小限制:不超過4095字節4.安全性:將數據存儲在客戶端,安全性較低拋出異常:throw new Error()其他存儲方式:1.sessionStorage會話存儲session Storage.setItem("name","熊大")session Storage.removeItem("name") (移除)alear(session Storage.getItem("name"))2.聽過屬性方式會話存儲session Storage.name = "熊大"session Storage.removeItem("name") (移除)3.local Storage第三十一章 cookie與session小結
1.你對cookie的了解:cookie是一小段文本信息,儲存于客戶端,每當用戶訪問站點時,程序都可以讀取包含cookie的信息2.cookie類型:會話型cookie和持久型cookie3.cookie與session區別:大小限制,儲存位置,性配,安全性補充
總結
- 上一篇: android动态切换logo和labe
- 下一篇: 原生JS 文件上传