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