您的位置:首頁>正文

JS|資料類型與物件(一切都是物件,理解了物件就理解了JS)

Jscript 有三種主要資料類型、兩種複合資料類型和兩種特殊資料類型。

主要(基本)資料類型是:

字串:如 "This text string" ;

數值:如123, 120.50 ;

布林:如 true 或 false;

複合(引用)資料類型是:

物件

陣列

特殊資料類型是:

Null

Undefined

Null 資料類型

在 Jscript 中資料類型 null 只有一個值:null。 關鍵字 null 不能用作函數或變數的名稱。

包含 null 的變數包含“無值”或“無物件”。 換句話說, 該變數沒有保存有效的數、字串、boolean、陣列或物件。 可以通過給一個變數賦 null 值來清除變數的內容。

請注意, 在 Jscript 中, null 與 0 不相等(與在 C 和 C++ 中不同)。 同時應該指出的是, Jscript中 typeof 運算子將報告 null 值為 Object 類型, 而非類型 null。 這點潛在的混淆是為了向下相容。

Undefined 資料類型

當物件屬性不存在或聲明了變數但從未賦值時會返回 undefined 值。

1 Wrapper物件

wrapper是一種物件, 它與其所代表的基礎資料類型同名。 每種基礎資料類型(string、number和Boolean)均有其對應的String物件、Number物件和Boolean物件。 這些物件都叫做wrapper, 並擁有屬性和方法, 可以進一步定義物件。 例如, String物件有一系列的方法, 使用這些方法可以改變字串的顏色、大小和字體。 Number物件的方法可以將一個數字格式化為指定位元數的有效數字。 無論是使用物件還是字面量方式創建string、number或Boolean, JS都可以進行內部資料類型轉換(基底資料型別和物件資料類型根據需要實現相互轉換)。 wrapper物件真正的優點是可以擴展基底資料型別的屬性及方法, 並反過來影響基底資料型別。

2 JavaScript有幾個內置的或本地物件

String物件

Number 物件

Boolean物件

Array物件

Date物件

Math物件

RegExp物件

Function物件(匿名函數)

可以通過new運算子來創建物件實例:

var carname=new String();

var x=new Number();

var y=new Boolean();

var cars=new Array();

var now = new Date();

var person=new Object;

創建Math物件的實例可以不使用new運算子。

3 字串物件

String物件是wrapper物件, 該物件包裝在一個基底字元串之上, 並擁有一系列的屬性和方法。

var string_name = "string of text";

var string_name = ne String("string of text");

將帶引號的字串文本賦給一個變數, 這樣就可以隱式地創建String物件, 是基本類型的字串。 也可以通過new關鍵字和構造函數String()顯式地創建String物件。 無論採用哪種方法, 新字串變數都可以使用String物件的屬性和方法。

4 創建自己的物件

要創建自己的物件實例, 必須首先為其定義一個構造函數。 構造函數創建一個新物件, 賦予物件屬性, 並在合適的時候賦予方法。 例如, 下面的示例為 pasta 物件定義了構造函數。 注意 this 關鍵字的使用,

它指向當前物件。

function pasta(grain, width, shape, hasEgg)

{

this.grain = grain;

this.width = width;

this.shape = shape;

this.hasEgg = hasEgg;

this.toString = pastaToString;

}

pastaToString是物件的定義中包含方法(函數)。

function pastaToString()

{

return "Grain: " + this.grain + " " +

"Width: " + this.width + " " +

"Shape: " + this.shape + " " +

"Egg?: " + Boolean(this.hasEgg);

}

定義了物件構造器後, 用 new 運算子創建物件實例。

var spaghetti = new pasta("wheat", 0.2, "circle", true);

window.alert(spaghetti);

可以給物件實例添加屬性以改變該實例, 但是用相同的構造器生成的其他物件定義中並不包括這些屬性, 而且除非你特意添加這些屬性那麼在其他實例中並不顯示出來。

-End-

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示