javascript
JS高级部分(个人认为)
首先,我們要知道JS的數(shù)據(jù)類型主要分為兩大類:
1.原始數(shù)據(jù)類型:
1)boolean
2)string
3)number
4)null
5)undefined
2.引用數(shù)據(jù)類型:
1)宿主?????? -->Bom,Dom
2)內(nèi)置?????? -->Globe Math
3)原生?????? -->function,array,object...
原始型數(shù)據(jù)類型和引用型數(shù)據(jù)類型的差距:
兩者差距在于對其的儲存方式不同,原始型數(shù)據(jù)類型是用一個(gè)存儲點(diǎn)來儲存,所以傳遞過去的直接是數(shù)據(jù)的內(nèi)容,而引用型數(shù)據(jù)類型是用一排連續(xù)的儲存點(diǎn)來進(jìn)行儲存,不能直接一次傳送過去所有的內(nèi)容,是按照順序一個(gè)接一個(gè)的進(jìn)行存儲,所以如果在傳遞過程中發(fā)生了數(shù)據(jù)的改變,那么被傳遞的一方也會跟著改變~
我們知道,如果要在一個(gè)函數(shù)中使用一個(gè)定義的變量,要么是在全局中定義,要么在該函數(shù)中定義,如果該變量在另一個(gè)函數(shù)中的話,就比較麻煩了(至少以前我是不知道該怎么做的)。
所以我們可以用一種閉包的方法來實(shí)現(xiàn),下面是該方法的基本用法:
function main(){
var i=0;
var out=function(){
i++;
console.log(i);
}
return out;
}
var bpack=show();
bpack();
運(yùn)行的結(jié)果是每一次運(yùn)行就會實(shí)現(xiàn)i++的效果,而并不會每次都讓i=0。也就是說,當(dāng)我們執(zhí)行函數(shù)
bpack()的時(shí)候,可以將i獨(dú)立出來,并不受main()里面i的影響。就可以實(shí)現(xiàn)在兩個(gè)函數(shù)中相互調(diào)用變量。
從例子中,我們可以看出,閉包的原理就是在一個(gè)函數(shù)中return另一個(gè)函數(shù),然后再調(diào)用主函數(shù),那么就可以使用其中的變量了。
匿名函數(shù):其實(shí)也是閉包的一種。
(function(i){console.log(i)})(x);
結(jié)果為x。
函數(shù)的繼承:
function game(){
this.gtime=100;
this.action=function(){};
}
function gamer(){
this.action=function(){
console.log("run")
}
}
gamer.prototype=new game();
var gamer1=new gamer();
console.log(gamer1);
gamer1.action();
原型鏈:
new gamer()先找到原型(如果有則執(zhí)行,沒有就不執(zhí)行),執(zhí)行原型里面的代碼,再找原型的原型,也就是最大的object對象...再執(zhí)行自己的代碼。
數(shù)據(jù)運(yùn)算:
加好兩端如果有字符串,就按照字符串拼接處理,如果沒有就按照算數(shù)運(yùn)算處理。
減號兩端都是按照算數(shù)運(yùn)算處理。
?
轉(zhuǎn)載于:https://www.cnblogs.com/zaxxm/p/4068683.html
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的JS高级部分(个人认为)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 無題
- 下一篇: 说说JSON和JSONP,也许你会豁然开