自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(129)
  • 收藏
  • 关注

原创 JavaScript对象继承——寄生组合式继承

d)寄生组合式继承优点:修正组合继承的缺点,只使用一次构造函数缺点:优势:做对比:

2020-10-14 19:36:50 257

原创 JavaScript对象继承——寄生式继承

c)寄生式继承(类似工厂模式)核心:创建新对象===》增强对象(添加属性或者方法)===》返回对象缺点类似于工厂模式

2020-10-13 17:11:43 288

原创 JavaScript对象继承——原型式继承

b)原型式继承核心:用一个函数,生出来一个新的对象 #案例:#把obj1的下标1改为"张三"优点:从已有对象繁衍出新的对象,不需要创建自定义类型缺点:1》原型的引用属性会互相影响(公用一个地址) 2》无法实现代码复用, 属性是后添加的,都没用到函数封装。...

2020-10-12 10:27:06 231

原创 JavaScript对象继承——组合继承

3》继承方式:(最常用的继承方式)a)组合继承优点: 1》不存在引用属性共享的问题2》可传递参数3》方法可复用缺点:(小瑕疵)子类原型上有一份多余的父类实例的属性(原型链使用了一次实例的所有的属性和方法,其次借用构造函数也使用了一次)...

2020-10-11 09:30:55 185

原创 JavaScript对象继承——借用构造函数

2》借用构造函数核心:借父类的构造函数来增强子类实例,即:相当于复制了一份父类的属性或者方法给子类了。#案例:这里不论是属性还是方法,都不是共享的,因此obj1变了,obj2不会改变。优点: a)解决了子类实例共享父类引用属性的问题b)创建子类实例时,可以向父类构造函数传递参数(如下例:)写法一:写法二:缺点:无法实现复用,每一个子类实例都有一个新的run函数,如果实例的对象多了(new多了),内存消耗过大。...

2020-10-10 20:36:54 130

原创 JavaScript对象继承——原型链

一、继承1》原型链用法:把实例的父类给子函数(子类)的原型#把实例的父类给子函数的原型(第9行)由于原型具有共享性,也就是写一个引用类型(20行),再new一下obj2【小结】缺点:a)因为修改了obj1.arr后obj2.arr也变了,因为来自原型对象的引用属性里所有实例共享的b)创建子类实例时,无法向父类构造函数传递参数...

2020-10-09 17:36:30 109

原创 JavaScript对象模式——动态原型模式

5》动态原型模式动态原型模式:是将所有的信息(属性和方法)都封装在构造函数中,而通过构造函数来初始化原型(只初始化一次)解决:第一个对象实例化的时候就初始化原型,后面的就不需要初始化#判断一下:由于obj1先执行一次函数内的代码,那么run方法就共享一次,共享完之后obj2再去new的时候,this.run 已经=“function”,那么就不初始化了。因此打印1只会出来一次。...

2020-10-08 22:29:20 281

原创 JavaScript对象模式——组台模式_构造函数和原型模式

组合使用构造器+原型模式一、作用:1. 构造函数:定义实例属性2. 原型:定义和共享属性二、优点: 每一个实例都会有自己的一份实例属性,但又同时共享着方法运行结果如下:把obj1.userName改为“李四”,发现obj2. userName没有改变因为1-7行是不共享的,9-11行是共享的,这样最大限度的解决了内存问题。#不管是构造函数还是上示的案例,都可以传入参数注意构造函数里的一个属性写:声明.属性,而name是传入的参数,不用加this运行结果如下:...

2020-10-07 09:19:54 162

原创 JavaScript对象模式——原型模式

3》原型模式特点:1.每当创建一个函数,都有一个prototype(原型)的属性2.原型(prototype)这个属性的指针,指向于一个对象,而这个对象的用途可以由特定类型的所有实例“共享”的方法和属性.3.原型(prototype)是共享所有的属性和方法,也就是如果new了2个函数(实例化2次),他们的方法是共享的(共同使用一个地址),做对比返回true。 run方法:run方法做一下对比:不管是两个=还是三个==,结果都是true做对比返回true,他们是共享的(共同使用一个地址),所以

2020-10-06 15:03:35 179 2

原创 JavaScript对象模式——构造函数模式

2》构造函数模式1.和工厂模式区别:构造函数中,不需要在内部创建对象(更不需要给这个对象添加属性、方法,也不用return 对象)2.如果要写构造函数模式,函数的首字母需要大写new Array()new String()new Date()new RegExp();3. 和工厂模式共同点(缺点):虽然new的是共同的一个函数,但是其中的方法做对比,返回false,也就意思说,new的函数中的方法,不是共享(不是同一个地址).#理解构造函数:1>其实构造函数就是普通函数,只是首字母

2020-10-05 17:10:55 102

原创 JavaScript对象模式——工厂模式

一、对象模式1》工厂模式a)现实中的工厂差不多b)在函数内部创建了一个新的空对象,最后返回这个对象c)缺点:虽然new的是共同的一个函数,但是其中的方法做对比,返回false,也就意思说,new的函数中的方法,不是共享(不是同一个地址)现在new一下函数:这里都用的同一个createObject(),因此打印出来的结果是一样的。#打印一下run方法,结果是一样的现在做一下对比:结果为false因此,虽然new的是同一个函数,但是其中的方法做对比,返回false,即o1、o2

2020-10-04 15:21:16 117

原创 JavaScript对象——序列化对象

一、序列化对象含义:可以把对象转换为字符串:JSON.stringify();可以把字符串转换为对象:JSON.parse();#打印obj,肯定显示是一个对象:把对象转化为字符串:再把字符串转换为对象:

2020-10-03 23:05:21 385

原创 JavaScript对象——枚举属性_读GET_写SET

6》枚举对象对象的属性枚举for in 遍历出来的是可枚举的for in 遍历不出来是不可枚举的name、age是能遍历出来的(是可枚举的),而toString constructor是遍历不出来的(即不可枚举的)。#让name属性不可枚举因此现在name属性是不可枚举的但对象身上还有name属性,并没有删除这个属性,只是不能遍历出来了。语法:Object.defineProperty(对象,属性名称,{enumerable:false }) ===>让对象的属性不可

2020-10-02 23:44:59 265

原创 JavaScript对象——检测属性是否存在

检测对象检测对象的属性、方法是否存在这些属性其实就是系统自带的

2020-10-01 23:32:27 177

原创 JavaScript对象——设置对象_查找对象_删除对象

设置对象属性:#获取li这里的li就是一个对象,那么下标其实就是它的一个属性而已。下标可以写为:lis.0下标也可以写为:lis[0]方法 属性和方法的区别是什么?方法一般都带有function,属性一般直接就是:冒号属性值。2》设置对象(属性和方法)方法就是:function(){}如何打印方法?如何设置(添加)属性和方法?以下两种写法都行,注意一定要加当前对象(obj或this)的语法,不能只写userName,否则会找不到,报错,因此它的归属感很强。3》

2020-09-30 10:42:27 300

原创 JavaScript对象——理解对象_创建对象

——理解对象_创建对象1》创建对象2》设置对象3》查找对象4》删除对象5》检测对象6》枚举对象一、JS中的对象俗话:JS中的一切事物皆对象。比如有:1.节点对象对象还有一些属性或方法,如:nodeName2.数组对象3.字符串对象4.日期对象5.正则对象还有一些其他的对象:连老大window也是对象可以打印看是否是object,typeof测试一下:1.理解对象:把对象比喻成一个人,人有什么?性别,年龄,姓名…人能干什么?打游戏,打代码,做

2020-09-29 23:25:03 141

原创 JavaScript运动框架——【案例】图片放大缩小切换效果

<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title></title> </head> <style> *{margin: 0;padding: 0;} ul{ list-style: none; width: 970px; height: 270px; position: relative; }

2020-09-28 16:15:18 190

原创 JavaScript运动框架——【小案例】淘宝首页图片切换效果

这一节讲运动框架

2020-09-27 23:52:57 931

原创 JavaScript运动框架——同时运动

同时运动含义:可以同时改变物体的值(比如:宽度、高度)这里变成了一个对象,需要改为对象obj,现在的obj就是第二个参数(对象)做一个遍历,那么打印obj [k],会弹出500、400,说明:   target ==>目标值 其实就是这里的obj[k]              attr   ==>属性名称 其实就是k虽然盒子的宽高已经改变了,但检查发现宽没到500px(

2020-09-26 10:39:48 152

原创 JavaScript运动框架——链式运动

#案例:让盒子实现来链式运动链式运动:是从一个动作运动到另一个动作,注意必须在动作执行完毕后才能进行下一个动作。如果不判断fn的情况,那么盒子往下运动的时候会报错#案例:使盒子执行完一系列动作,那么代码执行如下:如果改为this(闭包),那么盒子不会完整执行一系列动作,它会停止。停止的原因在于:执行的是fn函数(if(fn)fn();),因此需要使fn函数的this指向#当前对象(即让this指向136行的box节点,而box节点是152行的参数dom)因此,让this指向dom,应写

2020-09-25 21:16:53 189

原创 JavaScript运动框架——任意值运动

#实现效果:要求鼠标移入时改变li的高height,移出返回原样因此,如上案例:可以将上一节中改变li宽的代码中的width全部改为height。#但是如果又要将他改为left,会很麻烦,因此可以传入第三个参数如果要改变盒子的高,那么需要传入height#如果传入left,那么是改变偏移量,但还需要给它加一个定位再回到原点,那么需要设置为0,left#如果传入的是opacity,还需要考虑IE和非IE的情况:非IE变为IE,需要×100IE变为非IE ,需要÷100改变透明度前

2020-09-24 19:15:00 102

原创 JavaScript运动框架——多物体运动

含义:多物体即多个盒子实现效果:要求鼠标移入时改变每个单独盒子的宽width,移出返回原样<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title></title> </head> <style> *{margin: 0;padding: 0;} ul li{ width: 200px; height: 100px

2020-09-23 08:40:22 89

原创 JavaScript运动框架——缓冲运动

缓冲运动:(含义)比如列车运行(天津站——北京站),中途一直保持匀速运动,临近站点时减速直到停。假设目标值为300px,那么target就是300px越接近目标值越慢,但是并没有到300px这个点,到292.8px注意:像素px不能有小数,因此刚才的24.3是不对的,需要归置一下先打印一下speed,由于鼠标移入是正值,移出是负值因此可以做一下判断:如果speed>0这时候它停止就是300px那么如果speed<0,就会在0px停止对if判断语句进行优化:(改为三目运算符更好)

2020-09-22 12:14:06 185

原创 JavaScript运动框架——匀速运动

运动框架:1》匀速运动2》缓冲运动3》多物体运动4》任意值运动5》链式运动6》同时运动1》匀速运动2》缓冲运动3》多物体运动4》任意值运动5》链式运动6》同时运动1 运动框架_匀速运动一、运动框架鼠标移入,1000停止,但在不断移动的过程中,执行移动的速度会变快。其实当移进去的时候应该先停止间隙,再执行间隙因为每次移入,都会执行一遍函数animate(box,1000);,而函数animate每次都会执行timer的定时器然后每次30毫秒执行一次,那么就重合了,那么速度不断再加快。

2020-09-21 18:15:24 102

原创 JavaScript错误调试与处理——错误调试_断点

2.断点:一般用于排错应用场景:代码量比较大的时候,不能轻易实现排错时,那么需要用到断点案例:现在查看调试界面,利用断点如果是弹出age,显然没有这个属性,但不会报错,本身alert(obj.age);没有意义,因为弹出的会是undefined,那么这时候不会有错误信息。那么如何调试?(点出sources界面)首先设置断点(点击一下最左边的数字即可设置断点)其次设置了断点,但是还没有生效,需要刷新一下界面,页面会不断加载(即进入调试阶段)然后看到四个按钮可供选择(四个选项==&gt

2020-09-20 12:55:04 473

原创 JavaScript错误调试与处理——错误处理_TRY_CATCH

一、错误调试和处理1>try …catch语法:try{有可能导致错误的代码 }catch(错误对象){错误信息}finally{不管代码对还是错,都会执行}优点:不会阻止下面代码的正常运行案例1:已知在数学中,0不能作被除数,因此num/num1显然不正确,本应该提示警告0不能作被除数,但是却弹出无穷大案例2:已知空(null)不能加入属性和方法因此,控制台显示:不能设置userName案例3:写一个函数,打印obj的userName但是,如果误操作,在fn(

2020-09-19 23:56:11 222

原创 JavaScript函数式编程——高阶函数、规约函数和映射函数

一、函数式编程_高阶函数JavaScript函数式编程1》高阶函数:函数操作另外一个函数a)ForEach案例:操作高阶函数b)filter#打印数组#打印出数组中大于3,并且返回一个新数组 (filter筛选功能)二、函数式编程_规约函数2》规约函数:通过一个函数调用另一个函数,将数组转换为单一的值。a)Reduce ==》将数组转换为单一的值(并且实现相加功能),最后返回一个结果三、函数式编程_映射函数3》映射函数:会遍历数组,针对数组的每一个元素,调用指定的操作,然后

2020-09-18 23:38:00 351

原创 JavaScript关于THIS——改变THIS指针(指向)

三种方式:1>赋值要使返回结果是李四,那么111行即:把this(obj)这个对象给了变量That,由于内部有权访问外部,因此117行可改为116行写的(变量. username),道理一样。打印alert( f );打印arguments看实参(结果和打印alert(f );相同)但是arguments是一个对象,由于我们知道this代表当前对象,如果执行的是arguments0,那么this代表arguments(当前对象)152行弹出结果:155行弹出结果:2>cal

2020-09-17 23:10:48 320

原创 JavaScript关于THIS——THIS指向

#获取div节点步骤:获取id(box),添加box对象的onclick方法this代表当前对象,再看谁用onclick——box,则this代表的当前对象是box。#在全局中,变量其实就是window对象属性例如:#在全局中,函数其实就是window对象的方法#类比上一个案例,打印thisthis代表当前对象,再看谁调用fn——window,则this代表的当前对象是window#创建对象,给对象添加一个run方法,打印两种方式:方式一:1.构造函数创建对象: new Objec

2020-09-16 20:58:05 92

原创 JavaScript函数表达式_模仿块级作用域

一、模仿块级作用域 (JS没有块级作用域)#写一个for循环,i是在for循环里面定义的,因此可以打印出来#如果在外部打印,本身应该报错(i没有定义)但却打印出3,那么证明没有块级作用域。因此没有块级作用域,那么可以模仿一下:语法:(套用匿名函数的自执行)(function(){})()例如:报错!i没有定义。这就模仿了块级作用域,让它锁定在自执行函数内部,i无法出来。在外部执行该函数,但执行不出来。因为函数jQuery是在function函数内部(局部函数里)的,那么在全局打印它,

2020-09-15 23:09:13 94

原创 JavaScript函数表达式_递归函数_闭包

一、递归函数 (自己调用自己)案例1:写了一个fn函数,函数内部再return(返回)fn函数分析:口诀:正执行 反推因此,结果为1+2+3+4+5=15。案例2:阶层-递归函数分析:因此,结果为123=6。二、闭包1》什么是闭包a) 函数中还有一个函数首先fn1是一个函数,其次fn1函数内部还有一个return函数,即函数中还有一个函数,便产生了一个闭包现象。#现在打印fn1,那么结果应该是这个return函数体#若要执行return函数内的代码,则需要弹出fn1()()(执行

2020-09-14 23:32:46 106

原创 JavaScript垃圾回收机制

一、JS 垃圾回收机制垃圾回收机制是干什么的?把不需要或者是不用的代码进行回收例如:在第6行就应该把a销毁掉但是系统怎么知道销毁的a没有用呢?因此需要知道标记清除和引用计数的方法了。1》标记清除(最常用的一种垃圾回收机制)其实在11行声明变量的时候,就已经标记了一下,在12行还在用弹出函数14行函数已经调用完成(不再执行),那么在15行就没有再用到这个函数中的a,因此,它会在内存中,把a销毁掉。2》引用计数(最不常用一种垃圾回收机制)案例:创建一个函数,写一个对象,在fn中把obj

2020-09-13 23:23:21 100

原创 JavaScript作用域——执行顺序_优先级_面试题

1》先找本层(本作用域) ===> 逐级向外查找#在内部console.log打印a,结果为20。因为先找本层的,如果本层有,则直接返回;#如果本层没有,向外部逐级找。2》优先级由高到低: 变量> 函数> 参数> 提升提升是什么?所谓变量提升, 即函数任意地方声明变量都可以,就相当于是在顶部声明了(只是声明了而已,并不是赋值)举个例子:首先代码是从上往下执行的,如果不声明变量,直接打出a,肯定会报错!如果在console.log(a)上面写出var a(不赋值),会

2020-09-12 23:25:03 380

原创 JavaScript变量、作用域、内存——作用域_作用域链

一、JS中的作用域理解:作用域:代码(变量|函数)在某一个地方的作用(即变量|函数在JS中的什么地方,起的什么作用)结论1:在全局范围内,声明的变量和函数,其实都是window对象的属性或者方法1.变量弹出两个显示10的弹窗,证明:在全局范围内,变量其实是window对象的一个属性2.函数弹出来的都是fn,证明:在全局范围内,函数其实是window对象的一个方法。结论2:例如函数中声明一个局部变量在全局中打不出来显示:a is not defined如果在函数内打印a,那么就可以

2020-09-11 22:55:34 76

原创 JavaScript变量、作用域、内存——动态属性_复制变量值_传递参数_检测类型

一、基本类型和引用类型的值动态的属性创建对象:(常用的两种方式)1》构造函数形式创建: new Object2》字面量形式创建:{}构造函数形式的动态属性:和数组类似:因此,添加属性如下:小结:对象添加属性的语法:对象.属性名称=值对象添加方法的语法:对象.方法名称=函数(function(){})复制变量值(两种情况)【补充】javascript存储分为两个内容:1》栈内存(存放基本类型)2》堆内存(存放引用类型)1》引用类型:如果是赋值的状态,引用类型是共用一

2020-09-10 22:30:16 250

原创 JavaScript正则表达式——【小案例】解析URL地址栏参数

传“wd”得到%E5%96%8B%E5%96%8B如果传“rsv_spt”,得到1注意: (c+"=([^&]*)")比如: wd=%E5%96%8B%E5%96%8B&rsv_spt=1①wd后面有=,就写(c+"=")②看截止的地方,而不是看=后面有什么③要添加分组,因为RegExp.$1字符类必须要添加分组才能匹配到④使用^&,匹配到结尾的字符即可...

2020-09-09 23:28:08 170

原创 JavaScript正则表达式—— 【小案例】去除前后空格、获取CLASS名称

前后有空格:把前后空格替换为“空”但是为什么只去掉了左边的空格呢?原因在于:没有使用全局如果中间有空格,那么不能去掉因为,我们写的正则/^\s*|\s*$/g表示开始/结束有空格,添加全局,找前后,不涉及中间的。步骤:1》把页面上所有的dom节点,全部选取2》循环所有节点,if判断,如果页面上节点的className==lis3》把节点添加到数组中但是应该弹出两个才正确,这里我们可以用正则来做:步骤:1》把页面上所有的dom节点,全部选取注意:用正则的时候,需要看lis左边和右边都

2020-09-08 23:19:54 211

原创 JavaScript正则表达式——【小案例】手机号_邮箱_用户名_身份证

案例1:验证手机号要求:手机号必须是11位数且都是以1开头,手机号的第二位为:3 4 5 6 7 8步骤:①获取id②正则方法③条件判断<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title></title> </head> <body> Tel:<input type="text" id="userTel"&gt

2020-09-07 22:58:30 465

原创 JavaScript正则——字符串匹配正则的方法

一、字符串匹配正则方法语法:字符串.方法名称1》search(类似于indexOf)如果匹配,返回下标位置如果不匹配,返回-1查找a的下标位置注:①下标从0开始数;②空格也需要加入计算③不支持全局之前学习的修饰符的全局,但在这里不支持全局,只能找到第一个的位置,后面的a的位置找不到。2》match(类似于正则中的exec,返回的都是数组)如果匹配,返回数组如果不匹配,返回null正则.exec这个方法不支持全局要得到全局,那么需要用while循环一下语法:while(循

2020-09-06 22:33:21 2234

原创 JavaScript正则表达式——分组、字符类

一、分组语法:()() ==》表示把内容组合起来Abc是一个组合,如果只打印一个a,那么则会弹出false。c必须重复3次abc必须重复3次二、字符类RegExp.$1…$99注意:1》要使用字符类,必须运行(使用)一下正则;2》要使用字符类返回结果,必须正则中有分组这里的$1,是匹配到第一个分组内的内容(即必须要匹配正则里面分组的),(a)已经是一个分组了,为什么结果仍为空?原因在于:必须运行一下正则,因此任意使用一种正则方法:用法一:(写在外面)RegExp.$1$1匹配第

2020-09-05 21:50:12 171

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除