三、标准对象

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

1、一些类型使用规则:

(1)用parseInt()或parseFloat()来转换任意类型到number;

(2)用String()来转换任意类型到string,或者直接调用某个对象的toString()方法。需要注意,null和undefined没有toString()方法,而number调用它也会报错,所以还是别用toString了

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

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

(5)判断null请使用myVar === null;

(6)判断某个全局变量是否存在用typeof window.myVar === 'undefined';

(7)函数内部判断某个变量是否存在用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, 毫秒数

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

(1)JavaScript的Date对象月份值从0开始,牢记0=1月,1=2月,2=3月,……,11=12月

(2)now.toLocaleString():本地时间

(3)new.toUTCString():UTC时间

(4)时间戳:一个自增的整数,它表示从1970年1月1日零时整的GMT时区开始的那一刻,到现在的毫秒数

3、RegExp:正则表达式

4、在JavaScript中,我们可以直接使用JSON,因为JavaScript内置了JSON的解析。

(1)对象序列化为JSON:JSON.stringify(xiaoming, null, '  ')。注意,第三个参数是为了好看而传入了缩进

(2)第二个参数用于控制如何筛选对象的键值,如果我们只想输出指定的属性,可以传入Array,如JSON.stringify(xiaoming, ['name', 'skills'], '  ');

(3)第二个参数还可以传入一个函数,这样对象的每个键值对都会被函数先处理,如:

function convert(key, value) {

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

        return value.toUpperCase();

    }

    return value;

}

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

结果所有属性值都变成了大写。

(4)如果我们还想要精确控制如何序列化小明,可以给xiaoming定义一个toJSON()的方法,直接返回JSON应该序列化的数据:

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()还可以接收一个函数,用来转换解析出的属性,如:

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}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,711评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,079评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,194评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,089评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,197评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,306评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,338评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,119评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,541评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,846评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,014评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,694评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,322评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,026评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,257评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,863评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,895评论 2 351

推荐阅读更多精彩内容

  • 1. 本文是在学习廖雪峰先生的JavaScrip教程 后的归纳 一、标准对象 typeofJavaScript的世...
    ting723阅读 316评论 0 2
  • 2.包装对象 4.json 4.1.序列化 4.2.反序列化
    wyude阅读 259评论 0 0
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,138评论 0 13
  • 冬叹 清晨从梦中醒来 听见窗外已是春天 轻罗长衫垒枕边 禁不起清风一阵长叹 昨夜煮雪对明月 一夕红尘扫过 ...
    欣雅_47ff阅读 307评论 0 2
  • 那一年是2012年,14岁的我因为中考失利不得不踏上打工的旅途,那时的我对于社会对于人性对于朋友丝毫不了解。...
    我是个帅气小伙阅读 335评论 0 1