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)

四丶面向對象

​   建立對象的幾種經常使用方式:javascript

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()。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

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');
    }
相關文章
相關標籤/搜索