總結(jié)
Js:
Js的基本類型:number,string,boolean,null,undefined,
Typeof:檢測數(shù)據(jù)的類型,instanceof:檢測引用數(shù)據(jù)類型
undefined ==null; // true
1 == true;??// true
2 == true;??// false
0 == false; // true
0 == '';? ?// true
NaN == NaN; // false
[] == false; // true
[] == ![];??// true
undefined與null但不全等(===)
當(dāng)為number與string時(shí),會(huì)將string轉(zhuǎn)換為number烁竭;
number和boolean時(shí)哗咆,會(huì)將boolean轉(zhuǎn)換為number
number或string與Object璧诵,會(huì)將Object轉(zhuǎn)換成number或string
Dom元素:
創(chuàng)建節(jié)點(diǎn)是:?createElement()
創(chuàng)建文本節(jié)點(diǎn):createTextNode()
添加:appendChild()
刪除:removeChild()
替換:replaceChild()
插入:replaceChild()
Json:
JSON摹芙,全稱是 JavaScript Object Notation晴弃,即 JavaScript 對(duì)象標(biāo)記法纯路。這是一種 輕量級(jí) (Light-Weight)或油、 基于文本的 (Text-Based)、 可讀的 (Human-Readable)格式感昼。Json.parse()將字符串轉(zhuǎn)換為json格式
Json,stringify()將json格式轉(zhuǎn)換為字符串
普通函數(shù)和箭頭函數(shù)區(qū)別:
箭頭函數(shù)沒有自己的this,它的this是其父級(jí)函數(shù)的this普通函數(shù)是有自己的this,他的this是在程序運(yùn)行時(shí)確定的 call,apply,bind的理解
[if !supportLists]1.?[endif]相同點(diǎn):call,apply,bind都可以改變this指向
[if !supportLists]2.?[endif]區(qū)別:call和apply的傳參形式不同装哆, 函數(shù)名.call(要改變的對(duì)象,參數(shù)1,參數(shù)2,......) 函數(shù)名.apply(要改變的對(duì)象,[參數(shù)1,參數(shù)2,......])bind返回函數(shù)本身,但this已經(jīng)改變了 函數(shù).bind(要改變的對(duì)象)(參數(shù)1,參數(shù)2,......)或函數(shù).bind(要改變的對(duì)象定嗓,參數(shù)1,參數(shù)2,......)()
Js數(shù)組:
push():向數(shù)組尾部添加一個(gè)或多個(gè)元素蜕琴,并返回添加新元素后的數(shù)組長度。注意宵溅,該方法會(huì)改變原數(shù)組凌简。
?
pop():刪除數(shù)組的最后一個(gè)元素,并返回該元素恃逻。注意雏搂,該方法會(huì)改變原數(shù)組藕施。
?
unshift():在數(shù)組的第一個(gè)位置添加元素,并返回添加新元素后的數(shù)組長度凸郑。注意裳食,該方法會(huì)改變原數(shù)組。
?
shift():刪除數(shù)組的第一個(gè)元素芙沥,并返回該元素诲祸。注意,該方法會(huì)改變原數(shù)組而昨。
?
valueOf():返回?cái)?shù)組的本身救氯。
?
indexOf():返回指定元素在數(shù)組中出現(xiàn)的位置,如果沒有出現(xiàn)則返回-1歌憨。
?
toString():返回?cái)?shù)組的字符串形式着憨。
?
join():以參數(shù)作為分隔符,將所有數(shù)組成員組成一個(gè)字符串返回务嫡。如果不提供參數(shù)甲抖,默認(rèn)用逗號(hào)分隔。
?
concat():用于多個(gè)數(shù)組的合并植袍。它將新數(shù)組的成員惧眠,添加到原數(shù)組的尾部,然后返回一個(gè)新數(shù)組于个,原數(shù)組不變氛魁。
?
reverse():用于顛倒數(shù)組中元素的順序,返回改變后的數(shù)組厅篓。注意秀存,該方法將改變原數(shù)組。
?
slice():用于截取原數(shù)組的一部分羽氮,返回一個(gè)新數(shù)組或链,原數(shù)組不變。
slice(start,end)它的第一個(gè)參數(shù)為起始位置(從0開始)档押,第二個(gè)參數(shù)為終止位置(但該位置的元素本身不包括在內(nèi))澳盐。如果省略第二個(gè)參數(shù),則一直返回到原數(shù)組的最后一個(gè)成員令宿。
splice():刪除原數(shù)組的一部分成員叼耙,并可以在被刪除的位置添加入新的數(shù)組成員,返回值是被刪除的元素粒没。注意筛婉,該方法會(huì)改變原數(shù)組。
splice(start,delNum,addElement1,addElement2,...)第一個(gè)參數(shù)是刪除的起始位置癞松,第二個(gè)參數(shù)是被刪除的元素個(gè)數(shù)爽撒。如果后面還有更多的參數(shù)入蛆,則表示這些就是要被插入數(shù)組的新元素。
sort():對(duì)數(shù)組成員進(jìn)行排序硕勿,默認(rèn)是按照字典順序排序哨毁。排序后,原數(shù)組將被改變首尼。
?
map():對(duì)數(shù)組的所有成員依次調(diào)用一個(gè)函數(shù)挑庶,根據(jù)函數(shù)結(jié)果返回一個(gè)新數(shù)組。
?
filter():參數(shù)是一個(gè)函數(shù)软能,所有數(shù)組成員依次執(zhí)行該函數(shù),返回結(jié)果為true的成員組成一個(gè)新數(shù)組返回举畸。該方法不會(huì)改變原數(shù)組查排。
?
Js字符串:
?
charAt(num) // 得到指定索引位置的單字符
indexOf("str") // 取str第一次出現(xiàn)的索引
lastIndexOf("str") // 取str最后一次出現(xiàn)的索引
replace( "oldStr" , "newStr" ) // 找到oldStr替換為newStr
slice( start , end ) // 其對(duì)象可以是字符串or數(shù)組 , 記得其范圍不包括end
substr( start , length ) // 從索引start開始取length個(gè)字符 , length不可小于0否則返回空字符串
什么是閉包?
閉包就是函數(shù)外部的變量可以訪問函數(shù)內(nèi)部的變量抄沮,也具有一定的安全性跋核,盡量少用閉包,因?yàn)殚]包的會(huì)導(dǎo)致內(nèi)存泄漏叛买。
例:function?a(){
????var?n = 0;
????function?inc() {
????????n++;
????????console.log(n);
????}
????inc(); ?
????inc(); }
a();
深淺拷貝的區(qū)別:? ? 淺拷貝是將原始對(duì)象中的數(shù)據(jù)型字段拷貝到新對(duì)象中去砂代,將引用型字段的“引用”復(fù)制到新對(duì)象中去,不把“引用的對(duì)象”復(fù)制進(jìn)去率挣,所以原始對(duì)象和新對(duì)象引用同一對(duì)象刻伊,新對(duì)象中的引用型字段發(fā)生變化會(huì)導(dǎo)致原始對(duì)象中的對(duì)應(yīng)字段也發(fā)生變化。
深拷貝是在引用方面不同椒功,深拷貝就是創(chuàng)建一個(gè)新的和原始字段的內(nèi)容相同的字段捶箱,是兩個(gè)一樣大的數(shù)據(jù)段,所以兩者的引用是不同的动漾,之后的新對(duì)象中的引用型字段發(fā)生改變丁屎,不會(huì)引起原始對(duì)象中的字段發(fā)生改變。
Promise:
Promise構(gòu)造函數(shù)是解決異步的一個(gè)函數(shù)旱眯,并且傳入兩個(gè)參數(shù):resolve晨川,reject,分別表示異步操作執(zhí)行成功后的回調(diào)函數(shù)和異步操作執(zhí)行失敗后的回調(diào)函數(shù)删豺。
跨域:
跨域指的是瀏覽器不能執(zhí)行其他網(wǎng)站的腳本共虑。它是由瀏覽器的同源策略造成的,是瀏覽器對(duì)javascript施加的安全限制吼鳞。?同源就是指看蚜,域名,協(xié)議赔桌,端口均相同供炎。
?通過jsonp跨域?
跨域的解決方案:JSONP(JSON with Padding:填充式JSON)渴逻,應(yīng)用JSON的一種新方法,?JSON音诫、JSONP的區(qū)別:?1惨奕、JSON返回的是一串?dāng)?shù)據(jù)、JSONP返回的是腳本代碼(包含一個(gè)函數(shù)調(diào)用)?2竭钝、JSONP 只支持get請(qǐng)求梨撞、不支持post請(qǐng)求?(類似往頁面添加一個(gè)script標(biāo)簽,通過src屬性去觸發(fā)對(duì)指定地址的請(qǐng)求,故只能是Get請(qǐng)求)
代理:? www.baidu.com/index.html需要調(diào)用www.sina.com/server.php香罐,可以寫一個(gè)接口www.baidu.com/server.php卧波,由這個(gè)接口在后端去調(diào)用www.sina.com/server.php并拿到返回值,然后再返回給index.html
?
JQ:
JQuery是一個(gè)快速庇茫、簡潔的JavaScript框架港粱,是繼Prototype之后又一個(gè)優(yōu)秀的JavaScript代碼庫(或JavaScript框架)。
Jquery事件:
blur()元素失去焦點(diǎn)
focus()元素獲得焦點(diǎn)
change()表單元素的值發(fā)生變化
click()鼠標(biāo)單擊
dblclick()鼠標(biāo)雙擊
mouseover()鼠標(biāo)進(jìn)入(進(jìn)入子元素也觸發(fā))
mouseout()鼠標(biāo)離開(離開子元素也觸發(fā))
mouseenter()鼠標(biāo)進(jìn)入(進(jìn)入子元素不觸發(fā))
mouseleave()鼠標(biāo)離開(離開子元素不觸發(fā))
hover()同時(shí)為mouseenter和mouseleave事件指定處理函數(shù)
keydown()按下鍵盤
keypress()按下鍵盤
keyup()松開鍵盤
尺寸相關(guān)旦签、滾動(dòng)事件
1查坪、獲取和設(shè)置元素的尺寸
width()、height() 獲取元素width和height
innerWidth()宁炫、innerHeight() 包括padding的width和height outerWidth()偿曙、
outerHeight() 包括padding和border的width和height
outerWidth(true)、outerHeight(true) 包括padding和border以及margin的width和height
2羔巢、獲取元素相對(duì)頁面的絕對(duì)位置
offse()
3望忆、獲取可視區(qū)高度
$(window).height();
4、獲取頁面高度
$(document).height();
5朵纷、獲取頁面滾動(dòng)距離
$(document).scrollTop(); $(document).scrollLeft();
6炭臭、頁面滾動(dòng)事件
$(window).scroll(function(){ ...... })
對(duì)選擇集進(jìn)行修飾過濾(類似css偽類)
$('#ul1 li:first') //選擇id為ul1元素下的第一個(gè)li
$('#ul1 li:odd') //選擇id為ul1元素下的li的奇數(shù)行
$('#ul1 li:eq(2)') //選擇id為ul1元素下的第3個(gè)li
$('#ul1 li:gt(2)') //選擇id為ul1元素下的前三個(gè)之后的li
$('#myForm : input') //選擇表單中的input元素
$('div:visible') //選擇可見的div元素
對(duì)選擇集進(jìn)行函數(shù)過濾
$('div).has('p'); //選擇包含p元素的div元素
$('div').not('.myClass'); //選擇class不等于myClass的div元素
$('div').filter('.myClass'); //選擇class等于myClass的div元素
$('div').first(); //選擇第一個(gè)div元素
$('div').eq(5); //選擇第六個(gè)div元素
選擇集轉(zhuǎn)移
$('div').prev('p'); //選擇div元素前面的第一個(gè)p元素
$('div').next('p'); //選擇div元素后面的第一個(gè)p元素
$('div').closest('form'); //選擇離div最近的那個(gè)form父元素
$('div').parent(); //選擇div元素的父元素
$('div').children(); //選擇div元素的所有子元素
$('div').siblings(); //選擇div的同級(jí)元素
$('div').find('.myClass'); //選擇div內(nèi)的class等于myClass的元素
微信小程序:
1.注冊賬號(hào)
2.安裝開發(fā)工具
3.創(chuàng)建項(xiàng)目
4.完成項(xiàng)目上傳代碼至手機(jī)觀看效果
微信小程序的項(xiàng)目結(jié)構(gòu)分別是:
1. .Wxml頁面文件相當(dāng)于頁面html是頁面的結(jié)構(gòu)文件
2.Wxss樣式文件相當(dāng)于css樣式的文件,是整個(gè)小程序的公共樣式袍辞。
3. Index.Js是頁面的腳本文件鞋仍,在這個(gè)文件中我們可以監(jiān)聽并處理頁面的聲明周期函數(shù),聲明并處理數(shù)據(jù)搅吁,頁面交互事件等威创。
4. app.js是核心文件,app.js是小程序的腳本代碼谎懦,我們可以在這個(gè)文件監(jiān)聽并處理小程序的生命周期肚豺,聲明全局變量。
5.Json文件界拦,是對(duì)整個(gè)小程序的全局配置吸申,可以在這個(gè)文件中配置小程序由那些頁面組成,配置小程序的窗口顏色,導(dǎo)航樣式截碴,默認(rèn)標(biāo)題等梳侨。也是決定頁面文件的路勁,設(shè)置多tab日丹。
6. Logs頁面使用標(biāo)簽來寫代碼走哺,使用wx:for綁定logs數(shù)據(jù)。
7. rpx單位是微信小程序的尺寸單位
Vue:
Vue是一個(gè)用MVVM的框架哲虾,專注于前段視圖層丙躏。
Vue的生命周期函數(shù):
組件實(shí)例化Cteated、beforecreated束凑、
初始化:mount晒旅、beforemount、
掛載:updated湘今、beforeupdated敢朱、
銷毀:destoryed、beforedestoryed
Vuex
Vuex是Vue.js應(yīng)用程序開發(fā)的狀態(tài)管理模式摩瞎。Vuex是用來管理組件之間通信的一個(gè)插件。
Vuex的核心:
state
=>基本數(shù)據(jù)?getters =>從基本數(shù)據(jù)派生的數(shù)據(jù)?mutations =>提交更改數(shù)據(jù)的方法孝常,同步旗们!?actions
=>像一個(gè)裝飾器,包裹mutations构灸,使之可以異步上渴。?modules =>模塊化Vuex