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 0000000000000000000000000000000000000000..f7a5abc356e7eab9c40c3b844b76ef51bb742d42 --- /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 0000000000000000000000000000000000000000..59c1a9e3ffaf5b0387858a310d902478cca09689 --- /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 +``` +