三、標準對象

在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——{}。

1、一些類型使用規(guī)則:

(1)用parseInt()或parseFloat()來轉(zhuǎn)換任意類型到number;

(2)用String()來轉(zhuǎn)換任意類型到string,或者直接調(diào)用某個對象的toString()方法。需要注意,null和undefined沒有toString()方法,而number調(diào)用它也會報錯,所以還是別用toString了

(3)typeof操作符可以判斷出number、boolean、string、function和undefined,其余的都是object類

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

(5)判斷null請使用myVar === null;

(6)判斷某個全局變量是否存在用typeof window.myVar === 'undefined';

(7)函數(shù)內(nèi)部判斷某個變量是否存在用typeof myVar === 'undefined'

2、Date對象用來表示日期和時間,如:

var now = new Date();

now; // Wed Jun 24 2015 19:49:22 GMT+0800 (CST)

now.getFullYear(); // 2015, 年份

now.getMonth(); // 5, 月份,注意月份范圍是0~11,5表示六月

now.getDate(); // 24, 表示24號

now.getDay(); // 3, 表示星期三

now.getHours(); // 19, 24小時制

now.getMinutes(); // 49, 分鐘

now.getSeconds(); // 22, 秒

now.getMilliseconds(); // 875, 毫秒數(shù)

now.getTime(); // 1435146562875, 以number形式表示的時間戳

(1)JavaScript的Date對象月份值從0開始,牢記0=1月,1=2月,2=3月,……,11=12月

(2)now.toLocaleString():本地時間

(3)new.toUTCString():UTC時間

(4)時間戳:一個自增的整數(shù),它表示從1970年1月1日零時整的GMT時區(qū)開始的那一刻,到現(xiàn)在的毫秒數(shù)

3、RegExp:正則表達式

4、在JavaScript中,我們可以直接使用JSON,因為JavaScript內(nèi)置了JSON的解析。

(1)對象序列化為JSON:JSON.stringify(xiaoming, null, '? ')。注意,第三個參數(shù)是為了好看而傳入了縮進

(2)第二個參數(shù)用于控制如何篩選對象的鍵值,如果我們只想輸出指定的屬性,可以傳入Array,如JSON.stringify(xiaoming, ['name', 'skills'], '? ');

(3)第二個參數(shù)還可以傳入一個函數(shù),這樣對象的每個鍵值對都會被函數(shù)先處理,如:

function convert(key, value) {

? ? if (typeof value === 'string') {

? ? ? ? return value.toUpperCase();

? ? }

? ? return value;

}

JSON.stringify(xiaoming, convert, '? ');

結(jié)果所有屬性值都變成了大寫。

(4)如果我們還想要精確控制如何序列化小明,可以給xiaoming定義一個toJSON()的方法,直接返回JSON應該序列化的數(shù)據(jù):

var xiaoming = {

? ? name: '小明',

? ? age: 14,

? ? gender: true,

? ? height: 1.65,

? ? grade: null,

? ? 'middle-school': '\"W3C\" Middle School',

? ? skills: ['JavaScript', 'Java', 'Python', 'Lisp'],

? ? toJSON: function () {

? ? ? ? return { // 只輸出name和age,并且改變了key:

? ? ? ? ? ? 'Name': this.name,

? ? ? ? ? ? 'Age': this.age

? ? ? ? };

? ? }

};

JSON.stringify(xiaoming); // '{"Name":"小明","Age":14}'

(5)JSON.parse():將JSON字符串反序列化為一個js對象,如:

JSON.parse('[1,2,3,true]'); // [1, 2, 3, true]

JSON.parse('{"name":"小明","age":14}'); // Object {name: '小明', age: 14}

JSON.parse('true'); // true

JSON.parse('123.45'); // 123.45

(6)JSON.parse()還可以接收一個函數(shù),用來轉(zhuǎn)換解析出的屬性,如:

var obj = JSON.parse('{"name":"小明","age":14}', function (key, value) {

? ? if (key === 'name') {

? ? ? ? return value + '同學';

? ? }

? ? return value;

});

console.log(JSON.stringify(obj)); // {name: '小明同學', age: 14}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 1. 本文是在學習廖雪峰先生的JavaScrip教程 后的歸納 一、標準對象 typeofJavaScript的世...
    ting723閱讀 356評論 0 2
  • 2.包裝對象 4.json 4.1.序列化 4.2.反序列化
    wyude閱讀 310評論 0 0
  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,509評論 0 13
  • 冬嘆 清晨從夢中醒來 聽見窗外已是春天 輕羅長衫壘枕邊 禁不起清風一陣長嘆 昨夜煮雪對明月 一夕紅塵掃過 ...
    欣雅_47ff閱讀 344評論 0 2
  • 那一年是2012年,14歲的我因為中考失利不得不踏上打工的旅途,那時的我對于社會對于人性對于朋友絲毫不了解。...
    我是個帥氣小伙閱讀 351評論 0 1

友情鏈接更多精彩內(nèi)容