JavaScript---正则使用,日期Date的使用,Math的使用,JS面向对象(工厂模式,元模型创建对象,Object添加方法)

JavaScript---正则使用,日期Date的使用,Math的使用,JS面向对象(工厂模式,元模型创建对象,Object添加方法)

一丶正则的用法

创建正则对象:

方式一:
	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,刚好也符合.

二丶Date对象

// 创建 日期对象
	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对象

img

// 基础方法,可能会用到
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)

四丶面向对象

​   创建对象的几种常用方式:

1.使用Object或对象字面量创建对象

// 生成一个对象
var student= new Object();

// 封装两个属性
student.name='easy';
student.age='20';

2.工厂模式创建对象

// 工厂模式
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);    // 方式二,直接使用类创建对象


3.构造函数模式创建对象

​      1.实际上并不存在创建构造函数的特殊语法,其与普通函数唯一的区别在于调用方法。对于任意函数,使用new操作符调用,那么它就是构造函数;不使用new操作符调用,那么它就是普通函数

​      2.按照惯例,我们约定构造函数名以大写字母开头,普通函数以小写字母开头,这样有利于显性区分二者。例如上面的new Array(),new Object()。

      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

4.原型模式创建对象

      原型链甚至原型继承,是整个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');
    }


posted @ 2019-08-14 22:30  染指未来  阅读(224)  评论(0编辑  收藏  举报