JavaScript其他引用型別介紹
在結束了Array型別學習後小編在之後又接觸了幾種引用型別,但有很大一部分都跟之前自己在學習java時相同,所以今天歸類到一個部落格裡面來介紹一下。
1.Data型別
在實際操作中這些方法都是定死了的相關方法很多,這邊不一一介紹。歸類詳細所以還是在這邊開了一欄。
2.RegExp型別
在接觸這個型別時我們先要明確正則表示式的概念。在實際運用中我們用該型別方法來索引字串中的東西,起到索引作用,在這邊小編對於此類方法理解不是那麼深,先介紹一個最簡單的例項來方便理解。
例:
var text="cat,bat,sat,fat"; var part=/.at/ //建立RegExp值=後面為正則表示式 .at代表以at結尾 // var part=/.at/g 如果是這樣的話那麼就是在全域性中搜索就不會只返回一個元素 var matches = part.exec(text); alert(matches[0]); //輸出為cat
exec方法為捕獲方法
在這種情況下方法返回matches為陣列,這時候陣列會多兩個屬性(index:表示匹配項在字串中的位置 input:表示應用正則表示式的字串)
3.Function型別
很熟悉的一個型別,建立函式,運用方法之前部落格也有提到。這邊主要是介紹一下與之前java理解的函式區分。
1.首先沒有過載:
同名函式會按順序覆蓋之前與自己相同方法名的函式
2.函式本身就是變數,可作為函式值來使用。
我們可以將定義好的函式直接賦值給變數,變數傳遞引數進去可以直接使用。不止是侷限於此,根據2標題所給的話能實現變數所有的功能以及運用。
3.遞迴用法的完善
遞迴用法最常見無疑是將函式本身放入函式中,先舉上一個遞迴例子方便之後說
例:
function factorial(num){
if(num<=1){
return 1;
}
if(num>1){
return num*factorial(num-1);
}
}
這是我們最常見的階乘遞迴:
那麼我們想一下按照之前所說函式為變數,我現在將factorial函式定義一個 var a=factorial;
再將a函式傳遞進去還能實現遞迴麼。當然不行,在我們呼叫a時但他內部還是factorial函式。
那麼我們只需要將內部遞迴處改為:
function factorial(num){
if(num<=1){
return 1;
}
if(num>1){
return num * arguments.callee(num-1);
}
}
這樣就不會像之前那樣。
4.函式屬性和方法
函式自身有一個length屬性,使用時返回值為函式引數個數。
兩個非繼承方法apply()、call(),這兩種方法前一個引數為作用域,後一個引數為傳遞給函式的引數。
這兩種方法就是擴充函式作用域,舉一個很簡單的案例(就不以程式碼描述了),給定一個windows.color屬性,定義一個Object屬性值同樣給定一個color屬性,在一個函式中返回this.color,輸出函式的話那麼輸出為windows的color,但將函式用call方法將定義的Object值放進去時this所指就為該Object屬性值。
4.基本的幾個包裝型別
於java中基本一致。