zoukankan      html  css  js  c++  java
  • 05 this 在不同环境下的指向 和正则

    1.this

    2.正则

    -------------------------------------------

    1.this

    当前 事件源

    this 是 关键字 指的是调用函数的那个对象(指向函数的拥有者)


    $("this").css('color','#f60').siblings().css('color','#333');

    -------------------------------------------
    (1)在函数中引用!!!!!!

    var x=1;
    function test(){
    this.x;
    }
    console.log(x);

    1

    --------
    var x=1;
    function test(){
    this.x;
    }
    test();
    console.log(x);

    1
    --------
    var x=1;
    function test(){
    this.x = 0;
    }
    test();
    console.log(x);

    0
    --------

    var x=1;
    function test(){
    this.x = 0;
    }
    function test1(){
    this.x = 2;
    }
    test();
    test1();
    console.log(x);

    2 //test1 后面调用

    --------

    var x=1;
    function test(){
    this.x = 0;
    }
    function test1(){
    this.x = 2;
    }
    test1();
    test();
    console.log(x);

    0 //test 后面调用


    在函数里面 如果函数没有声明 那么 指向的是window 的变量 如果声明了 那么就是以函数为范围。

    --------

    --------------------------------

    (2)对象调用 !!!!!!

    var o = {};

    o.a = 1;

    o.action = function(){

    return this.a;


    }

    console.log(o.action());


    1

    //this 指的是当前对象


    --------

    //对象中调用外部函数 call() apply() 在一个对象中调用另外一个对象

    //call(this,name,age) 如果什么都没有传 那么默认就是 window !!!!!!

    //apply(this,[数组]) (在一个对象中调用另外一个对象) !!!!!!!!!!!!!!!!!!

    function test(){
    return this.a;//this 指向o o是这个函数的拥有者

    }
    var o = {};//对象
    o.a = 1;

    o.action = test;
    console.log(o.action());


    //1

    PS:this 始终指向 函数的拥有者(调用者) 在这里 函数拥有者是 o 这个对象 所以指向的就是o


    ------------------------------------------------


    //改变this 的指向

    var a='111';
    function test(){
    return this.a;//这里指向的是window

    }
    var o = {};

    o.a = 1;

    o.b = test;
    console.log(o.b.call());
    //call() 在一个对象中调用另一个对象 这里指向 window

    //111


    PS: call() 什么都没有穿 this 默认是指向window

    要是想指向 o这个对象 那么 .call(o); 这样就可以了

    -------------------------------------

    在call 传入指向后

    var a='111';
    function test(){
    return this.a;//这里指向的是window

    }
    var o = {};

    o.a = 1;

    o.b = test;
    console.log(o.b.call(o));
    //call() 在一个对象中调用另一个对象 这里this指向 o 这个对象

    //1


    ---------------------------

    (3)构造函数调用 !!!!!!


    function Fun(name,age){
    this.name = name;//this 指向的是实例化的对象
    this.age = name;

    }
    var fun = new Fun('shaozhu',22);
    var fun2 = new Fun('qq',32);
    console.log(fun2.name);

    qq


    //PS this 在构造函数中 指向的是实例化的对象


    ---------------------------

    多记住经典例子

    this指向!!!!!!!!!!!!


    //分享一个面试题目

    var number = 1;

    var obj = {
    number:2,
    showNumber:function(){
    this.number = 3;
    (function(){
    console.log(this.number);//自调函数 属于window 1
    })();
    console.log(this.number);//3 这里是当前函数
    }
    };
    obj.showNumber();

    1

    3

    PS:this 在自调用 this 指向的是window

    ------------------------------------

    正则!!!!!!!!!!!

    用的最得的就是 校验! 表单的校验

    var filter = /^[a-z]at$/;//方法一
    var value = 'cat';
    if(filter.test(value)){
    console.log('ok');
    }else{
    console.log('no');
    }

    -----------------

    var filter2 = new RegExp('^[a-z]at$');//方法二
    var value = 'cat';
    if(filter2.test(value)){
    console.log('ok');
    }else{
    console.log('no');
    }


    ---------------------------------------------------

     和 B

     匹配一个单词的边界

    表达式:hi

    能匹配:hi this


    B

    匹配一个单词没有边界的

    表达式:BhiB

    能配置:thiis

    hi

    -----------------

    d 和 D

    d 匹配一个数组字符

    能配置 0-9

    D 匹配一个非数字

    除了0-9 其它的都可以


    -----------------

    w 和 W

    w 匹配字母/数字/下划线

    W 匹配除 字母/数字/下划线

    -----------------
    ^ 和 $

    '^' 表示字符串的开头

    $ 表示字符串的结束


    ^shaozhu$

    shaozhu

    只能匹配这一个


    -----------------

    []

    方括号"[]" 匹配指定一堆字符中的一个

    ^[a-z]at$

    //a-z 的一个开头 然后 at 结尾

    能匹配的字符串(举例)

    cat mat zat

    ----------------


    如果大小写都想匹配 那么

    ^[a-zA-Z]at$
    //a-z A-Z 的一个开头 然后 at 结尾


    能匹配的字符串(举例)

    Cat mat Zat zat


    ---------

    ^[aeiou]at$

    能匹配的字符串(举例)

    aat aet iet oat uat

    ----------------------------------


    "[^]" 这个是 不匹配这个集合任何的一个字符 有点取反的意思


    例子:

    ^[^xyz]at$


    不能匹配的字符串(举例) 注意这里的不能的!!!

    xat yat zat
    ----------------------------------

    重复符号 “+”

    + 表示 前一模式 可以被重复1此 或多次

    表达式 ^go+gle$


    o 可以被重复一次或者N次(最少一次 最少有一个o)

    google

    gooogle

    ----------------------------------

    表达式

    ^g[aeiou]+gle$


    能匹配的字符串(举例)

    gagle

    gegle

    geagle

    geaeeaioueagle


    ----------------------------------

    "*" 表示前一模式可以被重复0次或n次


    ^go*gle$ //g 开通 o 可以被重复0次或n次 gle结尾

    ggle

    google

    gooooooogle

    ----------------------------------

    "?" 表示前一模式 可以被匹配0次或者一次

    ^go?gel$ g开头 中间 o 匹配0次或者一次 gle结尾


    ggle gogle


    ----------------------------------

    + 可以被重复1此 或多次

    * 重复0次或n次

    ? 匹配0次或者一次


    ----------------------------------


    重复符号 {x}

    {x}表示 前一模式 模式可以被重复x次


    ^go{2}gle$


    能匹配的字符串 只能重复2次 必须重复2次

    google

    ----------------------------------

    {x,y}

    表示 前一模式可以被重复x到y次

    表达式 ^go{2,4}gle$

    g开头 o必须重复 2-4次 gle结尾

    能匹配的只有这三个!!!

    google

    gooogle

    goooogle


    ----------------------------------


    {x.}


    前一个模式 至少被重复 x次 贪婪模式


    ----------------------------------


    子表达式 ‘()’

    可以指定一堆字符来匹配一个模式。

    表达式: ^(very )*lange$

    能匹配的字符串(举例)

    large

    very very lange

    very lange

    very very very very lange


    ---------------------------------

    | 分支 用来指定指定几个规则只要匹配一个规则即可成匹配

    表达式: ^com$|^org|^net$

    只能匹配 com org net

    ^com$|
    ^org|
    ^net$

    ---------------------------------

    转义符号

    如果要匹配 [ ' ^ + | ' 等有特殊符号的字符


    可以用 "" 做转义


    ^1*(2+3)=6$

    只能匹配 1*(2+3)=6

    ---------------------------------

    其它

    ^[a-zA-Z]+$ //由26个字母组成的字符串

    ^[A-1]+$ //由26个英文字母组成的字符串


    ^[a-z]+$ //由26个小写字母组成的字符串


    ^[A-Za-z0-9]+$ //由 数字 26个英文字母 组成的字符串


    ^\w+$ //由数字 26个英文字母或者下划线组成的字符串


    [u4e00-u9fa5] 汉字中的任意一个汉字

  • 相关阅读:
    3.数据库分类
    2.Oracle数据库安装教程
    1.Oracle数据库简介
    MySQL最全存储引擎、索引使用及SQL优化的实践
    大数据各个工具随笔
    初入Shell
    第4章 DDL数据定义
    第3章 Hive数据类型
    第2章 Hive安装
    MySQL 创建数据库
  • 原文地址:https://www.cnblogs.com/shaozhu520/p/8545340.html
Copyright © 2011-2022 走看看