js 標準對象

來源:互聯網
上載者:User

標籤:keyword   擷取   regex   ring   Null 字元串   字元   對象   obj   boolean   

在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‘

可見,numberstringbooleanfunctionundefined有別於其他類型。特別注意null的類型是objectArray的類型也是object,如果我們用typeof將無法區分出nullArray和通常意義上的object——{}
封裝對象

JavaScript還提供了封裝對象,熟悉Java的小夥伴肯定很清楚intInteger這種曖昧關係。

numberbooleanstring都有封裝對象。沒錯,在JavaScript中,字串也區分string類型和它的封裝類型。封裝對象用new建立:

var n = new Number(123); // 123,產生了新的封裝類型var b = new Boolean(true); // true,產生了新的封裝類型var s = new String(‘str‘); // ‘str‘,產生了新的封裝類型
雖然封裝對象看上去和原來的值一模一樣,顯示出來也是一模一樣,但他們的類型已經變為object了!所以,封裝對象和原始值用===比較會返回false

所以閑的蛋疼也不要使用封裝對象!尤其是針對string類型!!!

如果我們在使用NumberBooleanString時,沒有寫new會發生什麼情況?

此時,Number()BooleanString()被當做普通函數,把任何類型的資料轉換為numberbooleanstring類型(注意不是其封裝類型):

var n = Number(‘123‘); // 123,相當於parseInt()或parseFloat()typeof n; // ‘number‘var b = Boolean(‘true‘); // truetypeof b; // ‘boolean‘var b2 = Boolean(‘false‘); // true! ‘false‘字串轉換結果為true!因為它是非Null 字元串!var b3 = Boolean(‘‘); // falsevar s = String(123.45); // ‘123.45‘typeof s; // ‘string‘

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

  • 不要使用new Number()new Boolean()new String()建立封裝對象;

  • parseInt()parseFloat()來轉換任意類型到number

  • String()來轉換任意類型到string,或者直接調用某個對象的toString()方法;

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

  • typeof操作符可以判斷出numberbooleanstringfunctionundefined

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

  • 判斷null請使用myVar === null

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

  • 函數內部判斷某個變數是否存在用typeof myVar === ‘undefined‘

最後有細心的同學指出,任何對象都有toString()方法嗎?nullundefined就沒有!確實如此,這兩個特殊值要除外,雖然null還偽裝成了object類型。

更細心的同學指出,number對象調用toString()報SyntaxError:

123.toString(); // SyntaxError

遇到這種情況,要特殊處理一下:

123..toString(); // ‘123‘, 注意是兩個點!(123).toString(); // ‘123‘

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.