1. 程式人生 > >JavaScript其他引用型別介紹

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中基本一致。