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