JavaScript 之标准对象

标准对象

typeof new Number(123); //object,包装类型
new Number(123)===123;//false,类型不一致
var n=Number('123');//123,相当于parseInt()或parseFloat()
  1. 不要使用new Number()、new Boolean()、new String()创建包装对象;
  2. 用parseInt()或parseFloat()来转换任意类型到number;
  3. 用String()来转换任意类型到string,或者直接调用某个对象的toString()方法;
  4. 通常不必把任意类型转换为boolean再判断,因为可以直接写if (myVar) {...};
  5. typeof操作符可以判断出number、boolean、string、function和undefined;
  6. 判断Array要使用Array.isArray(arr);
  7. 判断null请使用myVar === null;
  8. 判断某个全局变量是否存在用typeof window.myVar === 'undefined';
  9. 函数内部判断某个变量是否存在用typeof myVar === 'undefined'。
123..toString(); // '123', 注意是两个点!
(123).toString(); // '123'

Date

let now=new Date();
now;//Date Thu Oct 17 2019 08:56:24 GMT+0800 (中国标准时间)
now.getFullYear();//2019
now.getMonth();//9实际+1
now.getDay();//4,星期
now.getDate();//17,17号
now.getHours();//8
now.getMinutes();//56
now.getSeconds();//24
now.getMilliseconds();//134
now.getTime();//1571273784134,时间戳
//符合ISO 8601格式的字符串
var d= Date.parse('2015-06-24T19:49:22.875+08:00');//返回时间戳
var d = new Date(1571273784134);  //时间戳变为Data对象
d.toLocaleString(); //"2019/10/17"
d.toUTCString();//"Thu, 17 Oct 2019 00:56:24 GMT"

RegExp

[a-zA-Z\_\$][0-9a-zA-Z\_\$]{0, 19}更精确地限制了变量的长度是1-20个字符(前面1个字符+后面最多19个字符),^表示行的开头,$表示行的结束。
/正则表达式/或者new RegExp('正则表达式')

var re1 = /ABC\-001/;
var re2 = new RegExp('ABC\\-001');
re1.test('ABC-001');//true
  1. 切分字符串
    'a b   c'.split(' '); // ['a', 'b', '', '', 'c']
    'a b   c'.split(/\s+/); // ['a', 'b', 'c']
    'a,b, c  d'.split(/[\s\,]+/); // ['a', 'b', 'c', 'd']
    'a,b;; c  d'.split(/[\s\,\;]+/); // ['a', 'b', 'c', 'd']
  2. 分组
    var re = /^(\d{3})-(\d{3,8})$/;
    //返回Array
    re.exec('010-12345'); // ['010-12345', '010', '12345']
    re.exec('010 12345'); // null
  3. 贪婪匹配
    var re = /^(\d+)(0*)$/;
    re.exec('102300'); // ['102300', '102300', '']
    //默认贪婪匹配,\d+尽可能的匹配
    var re = /^(\d+?)(0*)$/;
    re.exec('102300'); // ['102300', '1023', '00']
  4. 全局搜索
    var s = 'JavaScript, VBScript, JScript and ECMAScript';
    //标志g可以多个匹配,正则表达式会更新lastIndex属性
    var re=/[a-zA-Z]+Script/g;
    // 使用全局匹配:
    re.exec(s); // ['JavaScript']
    re.lastIndex; // 10
    re.exec(s); // ['VBScript']
    re.lastIndex; // 20
    re.exec(s); // ['JScript']
    re.lastIndex; // 29
    re.exec(s); // ['ECMAScript']
    re.lastIndex; // 44
    re.exec(s); // null,直到结束仍没有匹配到

    Json

    var xiaoming = {
     name: '小明',
     age: 14,
     gender: true,
     height: 1.65,
     grade: null,
     'middle-school': '\"W3C\" Middle School',
     skills: ['JavaScript', 'Java', 'Python', 'Lisp']
    };
    //第二个参数用于控制如何筛选对象的键值
    JSON.stringify(xiaoming,['name','skills'],' ');
    //还可以传入函数,每个键值对都会被函数先处理
    function convert(key, value) {
     if (typeof value === 'string') {
         return value.toUpperCase();
     }
     return value;
    }
    JSON.stringify(xiaoming, convert, '  ');
    //可以添加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.stringify(xiaoming); // '{"Name":"小明","Age":14}'
    //反序列化
    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}
全部评论

相关推荐

字节 飞书绩效团队 (n+2) * 15 + 1k * 12 + 1w
点赞 评论 收藏
分享
11-03 14:38
重庆大学 Java
AAA求offer教程:我手都抬起来了又揣裤兜了
点赞 评论 收藏
分享
11-15 17:19
湖南大学 Java
成果成果成果果:这是哪个公司的hr,这么离谱吗,我没见过用性别卡技术岗的,身边女性同学拿大厂offer的比比皆是
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务