————from CodeForDream
數(shù)據(jù) 和 過程 是構(gòu)成javascript的基本元素。
數(shù)據(jù) 分兩類:
- 簡單數(shù)據(jù)——有undefined茉贡,null腔丧,boolean作烟,number和string 五種
- 復(fù)雜數(shù)據(jù)——只有一種砾医,即對象(object)
過程 只有一種形式如蚜,就是 function
一、簡單數(shù)據(jù)類型
1 . undefined : 這個(gè)值表示變量不含有值探赫。
若 typeof(data) 的返回值是字符串 'undefined' 伦吠,即變量data的數(shù)據(jù)類型是 undefined魂拦,data不含有值。
注:typeof是javascript提供的運(yùn)算符潭千,運(yùn)行后會返回括號之中數(shù)據(jù)的數(shù)據(jù)類型借尿。如 typeof('hello') 返回結(jié)果是 'string'刨晴,則'hello'的類型是 字符串。
2 . null : 這個(gè)值表示變量為空路翻。
若 typeof(data) 的返回值是字符串 'null' 狈癞,即變量data的數(shù)據(jù)類型是 null,即data為空茂契。
undefined 和 null 的區(qū)別是:typeof(undefined) 返回值是 'undefined'蝶桶,typeof(null) 返回值是字符串 'object'(對象類型)。
3 . boolean : true 或 false 代表布爾值掉冶。
var data = true真竖,typeof(data) 返回值是字符串 'boolean' ,即變量data的數(shù)據(jù)類型是 布爾值厌小。
4 . number : javascript 只有一種數(shù)字類型。數(shù)字可以帶小數(shù)點(diǎn)璧亚,也可以不帶讨韭。如:123 和12.3
var data = 123,typeof(data) 返回值是字符串 'number' ,即變量data的數(shù)據(jù)類型是 數(shù)字透硝。
5 . string : 前面我們說起過狰闪,字符串是字符的載體,而且必須被成對的引號包圍濒生。 如: 'hello world!'
var data = 'hello world!'埋泵,typeof(data) 返回值是字符串 'string' ,即變量data的數(shù)據(jù)類型是 字符串甜攀。
二秋泄、復(fù)雜數(shù)據(jù)類型
對象(object)
形式一
{} 花括號琐馆,用來定義一個(gè)對象
括號內(nèi)部规阀,屬性以鍵值對的形式,如 key : value 來定義瘦麸,又稱屬性名和屬性值谁撼。屬性間由逗號分隔。
例如 var student={name:'Tom', finish_work:true, id:123};
對象 (student) 有三個(gè)屬性:name滋饲、finish_work 厉碟、 id
Ps:空格和屬性間的換行無關(guān)緊要。也可以寫成:
var student = { name : 'Tom', finish_work : true, id : 123 };
對象屬性值有兩種獲取方式:
name = student.name;
或 name = student['name'];
都可以將'Tom'取出來賦給變量name屠缭。在取值方面箍鼓,兩者是完全等價(jià)的。 唯一的區(qū)別在于使用場景呵曹,后者可以用于動態(tài)的取值款咖,我可以通過變量傳遞我要訪問的屬性名。
形式二 數(shù)組
對象(object)可以由一個(gè)或者多個(gè)屬性組成奄喂。比如期末成績的數(shù)據(jù)可以詳細(xì)地用對象(object)表示為:
var grades ={ Maths : 80, Chinese : 82, Biology : 79, Physics : 86};
僅需要記錄成績的數(shù)值時(shí)铐殃,可以采用對象的另一種格式 "數(shù)組(array)"。
var scores = [ 80, 82, 79, 86];
如上所示跨新,數(shù)組由方括號包圍富腊。在括號內(nèi)部,數(shù)據(jù)以獨(dú)立值的形式 value 來定義域帐。數(shù)據(jù)值之間由逗號分隔赘被。
取scores數(shù)組中第一個(gè)值的方法是:
var scores = scores[0];
由于數(shù)組的下標(biāo)(序號)是從零開始的,所以第一個(gè)項(xiàng)目是[0]肖揣,第二個(gè)是[1]民假,以此類推。
類與對象
1.對象的字面量表達(dá)式许饿,通常稱為JSON(JavaScript Object Notation)
對象 = { 屬性名 : 屬性值, 屬性名 : 屬性值, ┅ ┅ }
其中,屬性名可以是標(biāo)識符,字符串,或是數(shù)值.屬性值可以是任意的數(shù)據(jù)值,對象或者函數(shù).
{ x: 2, say_hello: function(){ console.log( "Hello!" ) } }
//屬性值包含函數(shù)
//像上面這種沒有函數(shù)名的函數(shù)叫做"匿名函數(shù)"
2.對象的new表達(dá)式
JavaScript中new表達(dá)式的作用是創(chuàng)建一個(gè)對象,我們一般稱通過new表達(dá)式創(chuàng)建的對象為 實(shí)例對象(簡稱實(shí)例).可以像下面這樣使用該表達(dá)式.
var robot = new Object(); //生成一個(gè)實(shí)例對象robot
robot.name = "Cat"; //定義實(shí)例對象robot的name屬性,并賦值
robot.age = 1;
robot.info = {height: 120, weight: 40}
robot.say_hello = function(){ console.log("Hello!") };
用new創(chuàng)建的對象阳欲,需要一個(gè)模板,就像工業(yè)鑄造的模具一樣。每new一次球化,便鑄造了一個(gè)新的實(shí)例秽晚。 這個(gè)對象 模板 被稱之為 類。這個(gè)new的過程叫做實(shí)例化筒愚。
上面代碼中赴蝇,new 表達(dá)式后面的 Object 就是類名。是通過new表達(dá)式,由類生成對象的用法巢掺。
除了類的實(shí)例化句伶,我們還可以直接以字面量表達(dá)式的方式定義了一個(gè)對象player:var player = {code : 2,name : 'Tom',status : 'active' }
三、函數(shù)的類型
typeof(函數(shù)名)
輸出"function"陆淀,即函數(shù)的類型考余。
四、對象的函數(shù)
1 轧苫、方法調(diào)用(調(diào)用對象的函數(shù)屬性)
對象的函數(shù)屬性有一種區(qū)別于一般函數(shù)的名稱楚堤,叫做 方法。相應(yīng)的含懊,調(diào)用對象的函數(shù)屬性時(shí)就叫做方法的調(diào)用身冬。
在對象內(nèi)部的函數(shù)(即方法)的調(diào)用:
var robot = {
x : 2,
say_hello : function(){ console.log( "Hello!" ); }
};
robot.say_hello();
2 、構(gòu)造函數(shù)調(diào)用(相當(dāng)于類的用法,用來生成對象)
在 對象的new表達(dá)式 內(nèi)容的代碼里:
var robot = new Object(); //生成一個(gè)對象robot
Object()是JavaScript內(nèi)置對象Object的構(gòu)造函數(shù)岔乔。
3 酥筝、動態(tài)訪問對象的函數(shù)
對象的函數(shù)屬性依然是函數(shù),所以除了點(diǎn)+函數(shù)名的方式訪問雏门,對象也可以通過[]的方式訪問嘿歌。比如
var robot = {
x : 2,
say_hello : function(){ console.log( "Hello!" ); }
};
robot["say_hello"](); //等價(jià)于 robot.say_hello();