内置对象和方法 var s1 = "abc"和var s2 = new String("abc")的区别:typeof s1 --> string而 typeof s2 --> Object 注意:内置对象首字母都是大写。 1. 自定义对象: 1.1 JavaScript的对象(Object)本质上是键值对。键在JS里面叫属性。 var a = {"name": "Alex", "age": 18}; console.log(a.name); console.log(a["age"]); 1.2 遍历对象中的内容: for(var i in a){ console.log( i, a[i] ) }; 结果是name Alex age 18 1.3 键的引号可有可无: var person2 = {name:'tom',age:18}; 输入person2的结果是Object { name: "tom", age: 18 } var person3 = {'name':'tom','age':18}; 输入person3的结果是Object { name: "tom", age: 18 } 1.4 创建对象 var person4 = new Object(); //创建对象 person4.name = 'marry'; //添加键值对(属性值) person4['age'] = 18; //添加键值对(属性值) 注意: var name = 'abc'; var person = { name:'tom', age:18, abc:123 }; 执行person[name],结果是123 2. Date对象 2.1 创建Date对象 //方法1:不指定参数,当地时间 var d1 = new Date(); console.log(d1.toLocaleString()); 结果: 2020/3/4 下午2:30:11 //方法2:参数为指定日期的字符串 var d2 = new Date("2004/3/20 11:12"); console.log(d2.toLocaleString()); 结果: 2004/3/20 上午11:12:00 //方法3:参数为毫秒数,从1970年开始跑了5000毫秒是什么时间 var d3 = new Date(5000); console.log(d3.toLocaleString()); console.log(d3.toUTCString()); 结果: 1970/1/1 上午8:00:05 Thu, 01 Jan 1970 00:00:05 GMT //方法4:参数为年月日小时分钟秒毫秒 var d4 = new Date(2004,0,20,11,12,0,300); console.log(d4.toLocaleString()); //毫秒并不直接显示 结果: 2004/1/20 上午11:12:00--->上面的0代表1月 2.2 Date对象的方法: var d = new Date(); //getDate() 获取日 //getDay () 获取星期 //getMonth () 获取月(0-11) //getFullYear () 获取完整年份 //getHours () 获取小时 //getMinutes () 获取分钟 //getSeconds () 获取秒 //getMilliseconds () 获取毫秒 //getTime () 返回累计毫秒数(从1970/1/1午夜) 3. JSON对象 var a = '{"name": "Alex", "age": 18}'; var b = {"name": "Alex", "age": 18}; // JSON字符串转换成对象 var obj = JSON.parse(a); // 对象转换成JSON字符串 var str = JSON.stringify(b); 4. Math对象:数学常用方法 abs(x) 返回数的绝对值。 floor(x) 对数进行下舍入。Math.floor(5.8)和Math.floor(5.1);结果都是5 max(x,y) 返回 x 和 y 中的最高值。 min(x,y) 返回 x 和 y 中的最低值。 pow(x,y) 返回 x 的 y 次幂。Math.pow(10,2);结果是100 random() 返回 0 ~ 1 之间的随机数。 round(x) 把数四舍五入为最接近的整数。Math.round(5.1);结果是5。Math.round(5.5);结果是6。 5. RegExp对象,正则表达式 5.1 RegExp对象创建方式一: var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9_]{5,11}$"); //创建RegExp对象方式(逗号后面不要加空格) var s1 = "bc123"; //要匹配的字符串 reg1.test(s1); // true //RegExp对象的test方法,测试一个字符串是否符合对应的正则规则,返回值是true或false。 5.2 RegExp对象创建方式二: var reg1 = /^[a-zA-Z][a-zA-Z0-9_]{5,11}$/; //不需要引号 5.3 简写:/^[a-zA-Z][a-zA-Z0-9_]{5,11}$/.test("bc123"); 5.4 四个方法: var s2 = "hello world"; s2.match(/o/g); // ["o", "o"] 查找字符串中 符合正则 的内容 s2.search(/h/g); // 0 查找字符串中符合正则表达式的内容位置 s2.split(/o/g); // ["hell", " w", "rld"] 按照正则表达式对字符串进行切割 s2.replace(/o/g, "s"); // "hells wsrld" 对字符串按照正则进行替换 5.5 g和i var s1 = "name:Alex age:18"; s1.replace(/a/, "哈哈哈"); // "n哈哈哈me:Alex age:18" s1.replace(/a/g, "哈哈哈"); // "n哈哈哈me:Alex 哈哈哈ge:18" 全局匹配,g是globle s1.replace(/a/gi, "哈哈哈"); // "n哈哈哈me:哈哈哈lex 哈哈哈ge:18" 不区分大小写 5.6 注意事项: // 注意事项1: // 如果regExpObject带有全局标志g,test()函数不是从字符串的开头开始查找, 而是从属性regExpObject.lastIndex所指定的索引处开始查找。 // 该属性值默认为0,所以第一次仍然是从字符串的开头查找。 // 当找到一个匹配时,test()函数会将regExpObject.lastIndex的值改为字符串中本次匹配内容的最后一个字符的下一个索引位置。 // 当再次执行test()函数时,将会从该索引位置处开始查找,从而找到下一个匹配。 // 因此,当我们使用test()函数执行了一次匹配之后,如果想要重新使用test()函数从头开始查找,则需要手动将regExpObject.lastIndex的值重置为 0。 // 如果test()函数再也找不到可以匹配的文本时,该函数会自动把regExpObject.lastIndex属性重置为 0。 var reg3 = /foo/g; // 此时 regex.lastIndex=0 reg3.test('foo'); // 返回true // 此时 regex.lastIndex=3 reg3.test('xxxfoo'); // 还是返回true // 所以我们在使用test()方法校验一个字符串是否完全匹配时,一定要加上^和$符号。 // 注意事项2: // 当我们不加参数调用RegExpObj.test()方法时, 相当于执行RegExpObj.test("undefined"), 并且/undefined/.test()默认返回true。 test()的()不能为空 var reg4 = /^undefined$/; reg4.test(); // 返回true reg4.test(undefined); // 返回true reg4.test("undefined"); // 返回true // 注意事项3:不能有空格 /^[a-zA-Z][a-zA-Z0-9_]{5,11}$/; //{5,11}不能有空格,例如{5, 11}逗号后面有空格,结果就不一样了。