首頁  >  文章  >  web前端  >  JavaScript標準物件的詳細介紹

JavaScript標準物件的詳細介紹

零下一度
零下一度原創
2017-06-28 13:34:191273瀏覽

這篇文章主要為大家詳細介紹了JavaScript標準物件的相關資料,具有一定的參考價值,有興趣的小夥伴們可以參考一下

在JavaScript的世界裡,一切都是對象。

但是某些物件還是和其他物件不太一樣。為了區分物件的類型,我們用typeof運算元取得物件的類型,它總是傳回一個字串


#
typeof 123; // 'number'
typeof NaN; // 'number'
typeof 'str'; // 'string'
typeof true; // 'boolean'
typeof undefined; // 'undefined'
typeof Math.abs; // 'function'
typeof null; // 'object'
typeof []; // 'object'
typeof {}; // 'object'

可見,number、string、boolean、function#和undefined有別於其他類型。特別注意null的類型是object,Array的類型也是object,如果我們用typeof將無法區分出null、Array和通常意義上的object——{}。

包裝對象

除了這些型別外,JavaScript還提供了包裝對象,熟悉Java的小夥伴肯定很清楚int和Integer這種曖昧關係。
number、boolean和string都有包裝物件。沒錯,在JavaScript中,字串也區分string類型和它的包裝類型。包裝物件用new建立:


var n = new Number(123); // 123,生成了新的包装类型
var b = new Boolean(true); // true,生成了新的包装类型
var s = new String('str'); // 'str',生成了新的包装类型

雖然包裝物件看起來和原來的值一模一樣,顯示出來也是一模一樣,但他們的型別已經變成object了!所以,包裝物件和原始值用===比較會回傳false:


typeof new Number(123); // 'object'
new Number(123) === 123; // false

typeof new Boolean(true); // 'object'
new Boolean(true) === true; // false

typeof new String('str'); // 'object'
new String('str') === 'str'; // false

所以閒的蛋痛也不要使用包裝物件!尤其是針對string類型! ! !
如果我們在使用Number、Boolean#String時,沒有寫new 會發生什麼情況?
此時,Number()、Boolean#String()#被當作普通函數,把任何類型的資料轉換為number、booleanstring類型(注意不是其包裝類型):


var n = Number('123'); // 123,相当于parseInt()或parseFloat()
typeof n; // 'number'

var b = Boolean('true'); // true
typeof b; // 'boolean'

var b2 = Boolean('false'); // true! 'false'字符串转换结果为true!因为它是非空字符串!
var b3 = Boolean(''); // false

var s = String(123.45); // '123.45'
typeof s; // 'string'

是不是感覺頭大了?這就是JavaScript特有的催眠魅力!

總結一下,有這麼幾條規則需要遵守:

  • #不要用new Number()、new Boolean()、new String()建立包裝物件;

  • #以parseInt()parseFloat()來轉換任意型別到number;

  • 用String()來轉換任意類型到string,或直接呼叫某個物件的toString()方法;

  • 通常不必把任意型別轉換boolean再判斷,因為可以直接寫入if (myVar) {...};

  • #typeof#運算符可以判斷number、boolean、string、function和undefined#;

  • 判斷Array要使用Array.isArray(arr);

  • 判斷null

  • #null
  • 請使用myVar === null;

  • #判斷某個全域變數是否存在用typeof window. myVar === 'undefined';

#函數內部判斷某個變數是否存在用

typeof myVar === 'undefined' 。 最後有細心的同學指出,任何物件都有toString()##方法嗎? null

###undefined######就沒有!確實如此,這兩個特殊值要除外,雖然null還偽裝成了###object類別###型。 ######

更细心的同学指出,number对象调用toString()报SyntaxError:


123.toString(); // SyntaxError

遇到这种情况,要特殊处理一下:

123..toString(); // '123', 注意是两个点!
(123).toString(); // '123'

不要问为什么,这就是JavaScript代码的乐趣!

以上是JavaScript標準物件的詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn