本篇內(nèi)容介紹了“JavaScript標準對象知識點整理”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站建設、網(wǎng)站制作與策劃設計,嵐縣網(wǎng)站建設哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設10年,網(wǎng)設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:嵐縣等地區(qū)。嵐縣做網(wǎng)站價格咨詢:18982081108
在JavaScript的世界里,一切都是對象。
但是某些對象還是和其他對象不太一樣。為了區(qū)分對象的類型,我們用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將無法區(qū)分出null、Array和通常意義上的object——{}。
包裝對象
除了這些類型外,JavaScript還提供了包裝對象,熟悉Java的小伙伴肯定很清楚int和Integer這種曖昧關系。
number、boolean和string都有包裝對象。沒錯,在JavaScript中,字符串也區(qū)分string類型和它的包裝類型。包裝對象用new創(chuàng)建:
var n = new Number(123); // 123,生成了新的包裝類型 var b = new Boolean(true); // true,生成了新的包裝類型 var s = new String('str'); // 'str',生成了新的包裝類型
雖然包裝對象看上去和原來的值一模一樣,顯示出來也是一模一樣,但他們的類型已經(jīng)變?yōu)閛bject了!所以,包裝對象和原始值用===比較會返回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類型!?。?br/>如果我們在使用Number、Boolean和String時,沒有寫new會發(fā)生什么情況?
此時,Number()、Boolean和String()被當做普通函數(shù),把任何類型的數(shù)據(jù)轉換為number、boolean和string類型(注意不是其包裝類型):
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特有的催眠魅力!
總結一下,有這么幾條規(guī)則需要遵守:
?不要使用new Number()、new Boolean()、new String()創(chuàng)建包裝對象;
?用parseInt()或parseFloat()來轉換任意類型到number;
?用String()來轉換任意類型到string,或者直接調用某個對象的toString()方法;
?通常不必把任意類型轉換為boolean再判斷,因為可以直接寫if (myVar) {...};
?typeof操作符可以判斷出number、boolean、string、function和undefined;
?判斷Array要使用Array.isArray(arr);
?判斷null請使用myVar === null;
?判斷某個全局變量是否存在用typeof window.myVar === 'undefined';
?函數(shù)內(nèi)部判斷某個變量是否存在用typeof myVar === 'undefined'。
最后有細心的同學指出,任何對象都有toString()方法嗎?null和undefined就沒有!確實如此,這兩個特殊值要除外,雖然null還偽裝成了object類型。
更細心的同學指出,number對象調用toString()報SyntaxError:
123.toString(); // SyntaxError
遇到這種情況,要特殊處理一下:
123..toString(); // '123', 注意是兩個點! (123).toString(); // '123'
“JavaScript標準對象知識點整理”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質量的實用文章!