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'

JavaScript提供了包装对象,类似于JavaintInteger的关系。JS中Number Boolean String可以使用new创建这类对象,但是这类导致判断不同于之前,例如

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

所以,JS中不要使用包装对象!
关于JS的几条原则,

  • 不要使用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'

Date

var now = new Date();
now; // Thu Mar 07 2019 18:03:16 GMT+0800 (中国标准时间)
now.getFullYear(); // 2019, 年份
now.getMonth(); // 2, 月份,注意月份范围是0~11,2表示三月
now.getDate(); // 7, 表示7号
now.getDay(); // 4, 表示星期四
now.getHours(); // 18, 24小时制
now.getMinutes(); // 3, 分钟
now.getSeconds(); // 16, 秒
now.getMilliseconds(); // 317, 毫秒数
now.getTime(); // 1551952996317, 以number形式表示的时间戳

注意:当前时间是浏览器从本机获取的时间。

正则表达式

表示字符

\d 一个数字,等价于[0-9]
\w 一个字符或数字或下划线,等价于[A-Za-z0-9_]
\s 一个空白字符,等价于[\f\n\r\t\v]
另外,以上都有大写版本,例如 \D,表示非数字,等价于[^0-9]

限定符

* 0次或多次
+ 1次或多次
? 0次或1次

() 用于子表达式,结合reg.exec(str)使用
[] 表示其中一个

正则表达式匹配

//正则的定义有两种,1. 用/ /括起来 2. 用RegExp表示
var re = /^\d{3}\-\d{3,8}$/;
re = new RegExp('^\d{3}\-\d{3,8}$');

//test用于判断是否匹配,true表示匹配.
re.test('010-12345'); // true
re.test('010-1234x'); // false
re.test('010 12345'); // false

正则表达式分组

//含有()的子表达式,用来分组,可以提取出来
var re = /^(\d{3})-(\d{3,8})$/;
//通过exex方法做提取,返回数组,数组第一个为总体
re.exec('010-12345'); // ['010-12345', '010', '12345']
re.exec('010 12345'); // null

当分组出现左右都满足的时候,默认分组是贪婪匹配, 也可以修改为 非贪婪匹配,如,/^(\d+)(0*)$/ 修改为 /^(\d+?)(0*)$/ 非贪婪匹配。

JSON

json格式我们比较熟悉了,几乎所有编程语言都有解析JSON的库,而在JavaScript中,我们可以直接使用JSON,因为JavaScript内置了JSON的解析。

序列化

js对象转化为json
JSON.stringify(obj)
这个函数有多个参数,第二个表示处理函数,第三个参数表示格式化分隔符

'use strict';

var xiaoming = {
    name: '小明',
    age: 14,
    gender: true,
    height: 1.65,
    grade: null,
    'middle-school': '\"W3C\" Middle School',
    skills: ['JavaScript', 'Java', 'Python', 'Lisp']
};
var s = JSON.stringify(xiaoming); //s==={"name":"小明","age":14,"gender":true,"height":1.65,"grade":null,"middle-school":"\"W3C\" Middle School","skills":["JavaScript","Java","Python","Lisp"]}
//格式化输出
JSON.stringify(xiaoming, null, '  ');

//value为string时,转化为大写
function convert(key, value) {
    if (typeof value === 'string') {
        return value.toUpperCase();
    }
    return value;
}

JSON.stringify(xiaoming, convert);

反序列化

将字符串,转化为javaScript对象
JSON.parse(str)
这个函数有两个参数,第一个为string,第二个为处理函数

//string转化为对象
var xiaoming = JSON.parse('{"name":"小明","age":14}'); // Object {name: '小明', age: 14}
//当key为name时,处理,加上 同学
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}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值