From 75c8d8a5534e1e3c9a0ad566607009f779a4a7e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E6=B5=A9=E6=95=8F?= <3127104562@qq.com> Date: Mon, 14 Nov 2022 21:16:00 +0800 Subject: [PATCH] =?UTF-8?q?11-14=E4=BD=9C=E4=B8=9A=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\345\210\231\344\275\234\344\270\232.html" | 24 +++ ...1\350\261\241&\346\255\243\345\210\231.md" | 202 ++++++++++++++++++ 2 files changed, 226 insertions(+) create mode 100644 "27 \350\265\265\346\265\251\346\225\217/\344\275\234\344\270\232/11.14\346\255\243\345\210\231\344\275\234\344\270\232.html" create mode 100644 "27 \350\265\265\346\265\251\346\225\217/\347\254\224\350\256\260/11.14this\345\257\271\350\261\241&\346\255\243\345\210\231.md" diff --git "a/27 \350\265\265\346\265\251\346\225\217/\344\275\234\344\270\232/11.14\346\255\243\345\210\231\344\275\234\344\270\232.html" "b/27 \350\265\265\346\265\251\346\225\217/\344\275\234\344\270\232/11.14\346\255\243\345\210\231\344\275\234\344\270\232.html" new file mode 100644 index 0000000..f7a5abc --- /dev/null +++ "b/27 \350\265\265\346\265\251\346\225\217/\344\275\234\344\270\232/11.14\346\255\243\345\210\231\344\275\234\344\270\232.html" @@ -0,0 +1,24 @@ + + + + + Title + + + + + \ No newline at end of file diff --git "a/27 \350\265\265\346\265\251\346\225\217/\347\254\224\350\256\260/11.14this\345\257\271\350\261\241&\346\255\243\345\210\231.md" "b/27 \350\265\265\346\265\251\346\225\217/\347\254\224\350\256\260/11.14this\345\257\271\350\261\241&\346\255\243\345\210\231.md" new file mode 100644 index 0000000..59c1a9e --- /dev/null +++ "b/27 \350\265\265\346\265\251\346\225\217/\347\254\224\350\256\260/11.14this\345\257\271\350\261\241&\346\255\243\345\210\231.md" @@ -0,0 +1,202 @@ +# 1.this对象&正则 + +### 1.1this什么时候产生:函数执行的那一刻产生 + +### 1.1.2默认绑定规则:this对象默认指向的是window + +```js +console.log(this);//结果:window +``` + +### 1.1.3独立调用:指向window ①立即执行 + +```js + function b(){ + console.log(this); + } + b();//结果:window +``` + +### 1.1.4立即执行 + +```js + (function b(){ + console.log(this); + }())//结果:window +``` + +### 1.1.5闭包 + +```js + function b() { + return function () { + console.log(this); + } + } + b()(); + + var a = b(); + a();//结果 window +``` + +## 1.2.1 隐式绑定:谁调用,指向谁 + +```js + var obj = { + a:'1', + fn: function (){ + console.log(this); + } + } + obj.fn();//结果obj +``` + +### 1.2.3隐式丢失(了解) + +```js +var a = 0; + function fn() { + console.log(this); + } + var obj = { + a: 2, + fn: fn + } + //obj.fn(); + + var bar = obj.fn; //var bar = fn; + bar(); //fn() +//结果:Window +``` + +### 1.3.1.显示绑定:call apply bind + +```js + function b(){ + 'use strict' + console.log(this); + } + var obj1 = { a:'1'} + b.call(obj1); //{a: '1'} + //在非严格模式下::call(null/undefined) 默认会自动指向window + //例如: + function b(){ + console.log(this); + } + var obj1 = { a:'1'} + b.call(null); + + + + +``` + +### 1.4.1new 中this:哪个对象调用,this指向该对象 + +```js + function Person(name){ + 'use strict' + this.name = name; + //行为 + Person.prototype.sayHi = ()=>{ + console.log(this); + } + } + var cp = new Person('cp'); + cp.sayHi();//Person {name: 'cp'} + + var sf = new Person('sf'); + sf.sayHi();//Person {name: 'sf'} + //ES6 :class默认是严格模式 +``` + +### 1.5.1特殊的this:箭头函数中的this(箭头函数本身没有this,里面的this指向的是父级函数中的this) + +```js + var obj = { + fn: ()=>{ + console.log(this); + } + } + obj.fn(); //结果:window + + +var a= 'window'; + var obj1 = { + a:'obj1', + fn2:function(){ + console.log(this.a); + }, + obj2:{ + a:'obj2', + fn:()=>{ + console.log(this.a); //父级:window, + }, + fn1:function (){ + console.log(this.a); + } + } + } + obj1.obj2.fn1();//obj2 + obj1.obj2.fn();//window + obj1.fn2();//obj1 +``` + +# 2.正则 + +## 2.1创建正则条件:1.字面量 2.new + +```js + var exp = /a/; + var exp1 = new RegExp(/a/); + + //true:匹配到 false:未匹配到 + console.log(exp.test('ba'));//true +``` + +## 2.2规律: + +```js +//匹配数字:[0-9]: 匹配一个数字 简写形式:\d +console.log(/[0-9]/.test('fasjkghwaig11fgasgfwajo'));//true +console.log(/\d/.test('fasjkghwaig11fgasgfwajo')); +//匹配字母: [ a-zA-Z],匹配一个字母, 简写形式\w +console.log(/[A-Za-z]/.test('15346546w434313')); +console.log(/\w/.test('15346546w434313')); + + ////邮政编码:由6个数字构成,第一位不可以是0 + //{m}:匹配m次 + //{m,n}:匹配最少m次,最多n次 + //{m,}:匹配最少m次,最多无限次 + +console.log(/[1-9]\d{5}/.test('312123')); + + +//匹配手机13 15 18: 11位 + + console.log(/1[358]\d{9}/.test('142123123456')); + console.log(/1[358]\d{5,9}/.test('152123123456')); + + +//尽可能地多匹配:贪婪模式 +console.log(/1[358]\d{5,9}/.exec('1521231234')); + +//尽可能少匹配:懒惰模式(?) + console.log(/1[^124679]\d{5,9}?/.exec('1521231234')); + + + //{1,}:1次或者多次 简写形式: + + //{0,}:0次或多次 * + //{0,1}:0次或者1次 ? +console.log(/1[358]\d??/.exec('1521231234')); //152 + + //排除这几位:^非 + console.log(/1[^124679]\d{5,9}/.exec('1221231234'));//null + + //^:表示必须以...开头 + console.log(/^2[358]\d{5,9}/.exec('1821231234'));//null + + //$:以..结尾 + console.log(/^1[358]\d{5,8}4$/.exec('1821231235'));//null +``` + -- Gitee