1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# typeof关键字 // number string boolean function undefined 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' // 判断是否是Array Array.isArray(arr) // 判断是否是null myVar === null // 判断某个全局变量是否存在 typeof window.myVar === 'undefined' // 函数内部判断某个变量是否存在 typeof myVar === 'undefined' // 任何对象都有toString()方法 除了null和undefined // number使用toString()会报错,可以使用..或() 123..toString() //'123' (123).toString() //'123' # 包装对象 // 尽量不要去用包装对象,没撒卵用 // 如果没有加new关键字 Number() Boolean() String() 就是普通的强制转换函数 // 如parseInt() parseFloat() object.toString() var n = new Number(123); // 123,生成了新的包装类型 object var b = new Boolean(true); // true,生成了新的包装类型 object var s = new String('str'); // 'str',生成了新的包装类型 object # Date对象 // Date获取的时间是根据客户端操作系统的时间来的,所以未必准确 var now = new Date(); now; // Sun Sep 04 2016 21:10:22 GMT+0800 (中国标准时间) now.getFullYear(); // 2016, 年份 now.getMonth(); // 8, 月份,注意月份范围是0~11,8表示九月 now.getDate(); // 4, 表示4号 now.getDay(); // 0, 表示星期天 now.getHours(); // 21, 24小时制 now.getMinutes(); // 10, 分钟 now.getSeconds(); // 22, 秒 now.getMilliseconds(); // 13, 毫秒数 now.getTime(); // 1472994622013, 以number形式表示的时间戳 // 可以传入时间戳(精确到毫秒数) var oneDay = new Date(1472994622013); # JSON var xiaoming = { name: '小明', age: 14, gender: true, height: 1.65, grade: null, 'middle-school': '\"W3C\" Middle School', skills: ['JavaScript', 'Java', 'Python', 'Lisp'] }; // 第2个参数可以进行筛选和处理格式化后的json值,第3个参数指定缩进距离 JSON.stringify(xiaoming, null, ' '); /* { "name": "小明", "age": 14 } */ JSON.stringify(xiaoming, ['name', 'age'], ' '); function convert(key, value) { if (typeof value === 'string') { return value.toUpperCase(); } if (key == 'skills') { return ''; } return value; } /* { "name": "小明", "age": 14, "gender": true, "height": 1.65, "grade": null, "middle-school": "\"W3C\" MIDDLE SCHOOL", "skills": "" } */ JSON.stringify(xiaoming, convert, ' '); // 如果我们还想要精确控制如何序列化小明,可以给xiaoming定义一个toJSON()的方法 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 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 // 可以接收一个函数,用来转换解析出的属性 JSON.parse('{"name":"小明","age":14}', function (key, value) { if (key === 'name') { return value + '同学'; } return value; }); // Object {name: '小明同学', age: 14} |