JavaScript中的參考型別

來源:互聯網
上載者:User

JavaScript中的參考型別
JavaScript中的參考型別

JavaScript中的資料類型有兩種,基本類型與參考型別!基本類型主要包括Boolean、String、Number;參考型別包括Object、Array、Function、Date(常用的)。

參考型別

參考型別的值(對象)是參考型別的一個執行個體。在JS中,參考型別是一種資料結構,用於將資料和功能組織在一起。它也常被稱為類,但這種稱呼並不妥當。儘管JS從技術上講是一門物件導向的語言,但是並不具備傳統的物件導向語言所支援的類和介面等基本結構。參考型別有時候也能被稱為對象定義,因為他們描述的是一類對象所具有的屬性和方法。

Object類型

建立object類型執行個體有兩種方式。第一種是使用new操作符後跟Object建構函式:

var person =new object();person.name="bluce";person.sex="man";person.age=58;

第二種是使用對象字面量標記法,(Key:Value

var person ={    name:'bluce',    sex:'man',    age:58}

推薦使用第二種方式,簡潔,代碼量少,有一種封裝資料的感覺。向函數傳遞大量參數的首選方式(前面部落格都採用的這種方式)。

Array類型

Object類型是JS中最常用的資料類型,Array類型僅次之。Array類型有如下特性:

數組的每一項可以檔案類型的資料。{38,’bluce’,{name:’bluce’,sex:’man’}}; 數組長度是動態變化的,類似於java中的泛型
同樣建立數組也有兩種方式, 第一種是使用Array建構函式,代碼如下:
var persons =new Array();var persons=new Array(20);var persons=new Array('bluce','james','jhon');

另外,在使用Array建構函式時也可以省略new操作符。省略操作符的結果和上面代碼結果相同:

var persons = Array();var persons = Array(20);var persons = Array('bluce','james','jhon');

第二種是使用數組字面量標記法,數組由[]包裹,多個資料項目之間以逗號隔開。

var players = [];var players = ['kurry','kobe','james'];

索引與Java、C#等語言一樣,從0開始。item=players[0];
Array 常用方法:

方法 作用
push() 添加資料至數組末尾,可以是任意多項;返回修改後數組長度
pop() 移除數組末尾項,返回移除項;length-1
shift() 移除數組首項,返回移除項;length-1
unshift() 在數組前端添加任意多項,並返回修改後數組長度
reverse() 重排序
sort() 重排序
concat() 根據傳入參數重新構建數組
slice() 分割數組
splice()  
indexOf  
lastIndexOf()  
迭代方法 every()、some()、map()、forEach()、filter()

方法有些多,後面總結自己常用的一些方法。

Function類型

JS中的函數實際上是對象,每個函數都是Function類型的執行個體,而且都與其他參考型別一樣具有屬性和方法。由於函數是對象,因此函數名實際上也是一個指向函數對象的指標,不會與某個函數綁定(函數無重載)。函數定義由三種方式:
第一種——函式宣告

function sum(num1,num2){    return num1+num2;}

第二種是函數運算式,下段代碼定義了變數sum並將其初始化為一個函數。

var sum = function(num1,num2){    return num1+num2;};

第三種是使用Function建構函式。Function建構函式可以接收任意數量的參數,但最後一個參數始終被看成是函數體,而前面的參數則枚舉了新函數的參數,例如:

var sum=Function('num1','num2','return num1+num2');

不推薦第三種方式,但這種方式表明函數實際上就是對象。一二兩種方式中函式宣告用的多一些,函數運算式次之。

函數名僅僅是指向函數的指標,因此函數名與包含對象指標的其他變數沒有什麼不同,也就是說一個函數可能會有多個名字。使用不帶圓括弧的函數名是訪問函數的指標,而非調用函數。例如:

function sum(num1,num2){    return num1+num2;} alert(sum(2,2));       //4var anotherSum=sum;alert(anotherSum(2,2));//4sum=null;alert(anotherSum(2,2));//4
函數沒有重載

函數名是指向函數的指標,JS中沒有函數重載的概念

function add(num){    return num+10;}function add(num){    return num+20;}var result=alert(add(10));    //30

上述代碼聲明了兩個同名的函數,其結果是後面的函數覆蓋了前面的函數,以上代碼實質上等同與以下代碼:

var add=function(num){    return num+10;};add =function(num){    return num+20;};var result=alert(add(10));      //30

add只是指標,重複聲明只是改變了add指向的函數。

函數屬性和方法

JS中函數是對象,因此函數也有屬性和方法。每個函數都包含兩個屬性:length和prototype。其中,length屬性工作表示函數希望接收的具名引數的個數。prototype(原型),後面重學js物件導向編程時再著重總結。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.