方式一: var reg=new RegExp('正则表达式');//注意,写在字符串中全部带\的元字符都会被转义,应该写做\\ reg.test('待检测的字符串') //若是字符串中含有符合表达式规则的内容就返回true,不然返回false 方式二: var reg=new RegExp(/正则表达式/); //内部的元字符就不会转义了 reg.test('待检测的字符串') //若是字符串中含有符合表达式规则的内容就返回true,不然返回false
//match()方法: 匹配字符串 var emp='abcd1234'; var emp2='Day day up'; emp.match(/\d/); //只匹配一个数字 emp.match(/\d/g); //g 表明匹配全部符合规则的,返回一个数组 emp2.match(/d/); //只匹配小写的a emp2.match(/D/i); //i 表示不区分大小写,匹配一个 emp2.match(/d/gi); // 匹配全部的符合d的全部字符,不区分大小写,返回一个数组 //search()方法:匹配索引第一个位置的索引 emp2.search(/正则表达式/i); //不区分大小写.从emp中找出符合子串第一个位置的索引位置 emp2.search(/a/); // 1 第一个a字符的索引位置 //split()方法 :根据正则切割,n是切出来几个 emp2.split(/正则表达式/i,n); //不区分大小写,根据正则切割,返回前n个结果 emp2.split(/''/i,2); // ["Day", "day"] emp2.split(/a/i,); // ["D", "y d", "y up"] //replac()方法 :替换正则匹配出来的位置 emp2.replac(/正则表达式/gi,'新的值');//i表示不区分大小写,g表示替换全部,将符合正则条件的内容替换成新的值
//问题1 var reg=/\d/g; //正则匹配多个数值 reg.test('a1b2');//屡次匹配会进入轮循,第一次true,第二次true,第三次false,第四次true.... //问题2 var reg=/\w{5,10}/; //匹配字符或数字:5-10个 reg.test(); //若是为空,默认值是undefined,恰好也符合.
// 建立 日期对象 var dt=new Date(); // 1. 获取当前时间 console.log(dt); // Tue Aug 13 2019 19:45:25 GMT+0800 (中国标准时间) // 2.获取年月日,星期 dt.getFullYear(); //年 dt.getMonth(); //月,从0开始,范围 0-11 dt.getDate(); // 获取日 dt.getDay(); //星期几, // 3.获取时分秒 dt.getHours(); //获取小时 dt.getMinutes(); // 获取分钟 dt.getSeconds(); //秒 // 4. 自定义时间 var dt2=new Date('2018/12/12 12:12:12'); var dt3=new Date(2018,1,1) ; //浏览器不一样显示天不一样,可是月份始终少一个
// 基础方法,可能会用到 Math.abs(x); //返回x的绝对值 Math.pow(x,y); //返回x的y次幂 Math.round(x); //四舍五入 Math.sqrt(x); //返回平方根 Math.exp(x); //返回e的指数, e约等于2.7 Math.log(x); //返回数的天然对数(底数e) Math.sin(x); //返回正弦 Math.cos(x); //返回余弦 Math.tan(x); //返回正切
// 向下取整 var x=1.234 console.log(Math.ceil(x)); //2 // 向上取整 var x=1.234 console.log(Math.floor(x)); //1 // min/max 最小值/最大值 console.log(Math.min(1,2,3,4,5)); //1 console.log(Math.max(1,2,3,4,5)); //5
// 随机数 区间(0,1] var ran=Math.random(); //取100-200之间的随机数, //公式:min - max之间的随机数 //min+Math.random()*(max-min) 100+Math.random()*(200-100)
建立对象的几种经常使用方式:javascript
// 生成一个对象 var student= new Object(); // 封装两个属性 student.name='easy'; student.age='20';
// 工厂模式 function createStudent(name,age){ // 实例化一个对象 var obj=new Object(); //给这个对象封装属性 obj.name=name; obj.age=age; //将这个对象返回 return obj; } var s1=new createStudent('easy1',20); //方式一,new var s2=createStudent('easy2',22); // 方式二,直接使用类建立对象
1.实际上并不存在建立构造函数的特殊语法,其与普通函数惟一的区别在于调用方法。对于任意函数,使用new操做符调用,那么它就是构造函数;不使用new操做符调用,那么它就是普通函数前端
2.按照惯例,咱们约定构造函数名以大写字母开头,普通函数以小写字母开头,这样有利于显性区分两者。例如上面的new Array(),new Object()。java
3.使用new操做符调用构造函数时,会经历(1)建立一个新对象;(2)将构造函数做用域赋给新对象(使this指向该新对象);(3)执行构造函数代码;(4)返回新对象;4个阶段面试
// 建立一个js类 function Student(name,age){ this.name=name; this.age=age; this.alertName=function(){ alert(this.name); }; } //实例化对象 var s1=new Student('d',18); var s2=new Student('l',20); //instanceof操做符来检测对象类型 var a1=new Array(20);//实例化一个数组对象 var s1=new Student('年年',20); alert(s1 instanceof Student); // true alert(s1 instanceof Array); //false alert(a1 instanceof Student); // false alert(a1 instanceof Array); // true alert(a1 instanceof Object); //true 一切对象都来自Object alert(s1 instanceof Object); //true
番外篇:是将对象方法移到构造函数外部👇正则表达式
// 通常把公有的方法移到建立的类以外,减小内存消耗 function Student(name,age){ this.name=name; this.age=age; this.alertName=alertName; } function alertName(){ alert(this.name); } //实例化对象 var s1=new Student('easy1',20); s1.alertName(); // easy1
原型链甚至原型继承,是整个JS中最难的一部分也是最很差理解的一部分,在这里因为咱们课程定位的缘由,若是对js有兴趣的同窗,能够去查阅一下相关JS原型的一些知识点。更加有助于你之后前端JS的面试。数组
// 给 Student 类添加一个方法 function Student(){ this.stu_name=name; this.stu_age=age; } // 给 js 的Student类添加一个方法 Student.prototype.alertName=function(){ alert(this.name); } var s1= new Student('a',123); s1.alertName(); //a // 给 Object类 添加一个方法 Object.prototype.alertName=function(){ alert('Hello'); }