关于js:JavaScript是一门轻量级、基于面向对象的、即时编译的一门解释型语言。
特点
1,js严格区分大小写
2,每一行代码应该以分号结尾,但是可以省略
3,js代码的执行顺序,从上往下依次执行
感觉前面的基础的东西没什么好说的,就直接从后面开始吧
主要就是for和while循环
for循环
for (let index = 0; index < array.length; index++) {
}
while循环
while (condition) {
}
函数:已经封装好了的一段可以重复调用,并且实现某种功能的代码块
1、封装好的
2、重复调用
3、实现某种功能或者目的
函数是一个表达式,函数表达式默认的返回值是undefined 如果,需要指定返回值,请使用 return语句将数据返回!
作用域: var声明的变量以及function声明的函数在声明创建的时候,其作用域就已经确定了!
包含三中作用域,全局作用域,函数作用域,块级作用域
作用域链:就在将多个作用域进行关联,形成一个隐式的链条,通过这个链条可以访问到上级作用域
注意:作用域链,是从里往外依次寻找!不能从外往里去寻找对应变量或者函数、
this关键字:当函数被调用时,运行环境会自动向该函数隐式传入this对象
this的指向是变化的,在不同情况下函数的执行中,this的指向是不一样的!
判断this的两种方法
1、当函数作为普通函数调用执行时 函数名()或IIFE 函数的this指向的是window
2、当函数作为某个对象的方法进行调用时,该方法中的this指向的是调用者,而非持有者!
对象名.方法() 表达式.方法()
正常情况下:局部作用域下声明变量或者函数,当该作用域中代码执行完毕后,该函数所声明的变量、函数就被销毁了
闭包:闭包就是当函数被嵌套声明时,并且该函数被直接或者间接返回或者赋值给某个全局变量!
那么这个时候js内部发生一些事情
构造函数语法规则: new 构造函数(形参列表)
构造函数与普通函数的不同:
1、构造函数主要目的不是去实现某个功能,主要是去实例化对象
2、构造函数中的this指向不同,this指向的是一个新创建的空对象 {}
3、构造函数一般不会单独执行,应该与new 配合执行
4、构造函数的返回值有所不同
-1)如果没有return语句,默认返回新创建的那个空对象
-2)如果有return语句:
情况1: 如果return返回的是基本数据类型,直接无视返回值,还是返回空对象
情况2: 如果return返回的是引用数据类型,则返回该引用数据类型!
注意:大部分情况下,构造函数是不写return的
5、 构造函数的首字母应该大写
new关键字做的事情:
1、在构造函数中,创建一个空对象
2、让构造函数中this指向这个空对象
3、进行对象的初始化
4、返回初始化后的对象
原型属性,每一个对象身上都具备一个属性,该属性称作为原型属性!
原型属性有两类:
原型对象:存放在prototype属性或者__proto__属性中的对象,称作为原型对象
prototype,存放在该属性中的对象称作为显式原型对象
proto,存放在该属性中的对象称作为隐式原型对象
显式原型对象(prototype)的作用:
- 1、当函数作为构造函数使用,该属性才发发挥作用,如果是普通函数执行,原型对象毫无作用
- 2、当函数作为构造函数时,会创建一个实列的空对象
创建好空对象后,就会把 prototype中指向的原型对象赋值给 空对象的__proto__属性中
这样被创建好的空对象就具备了自己的原型对象!
原型链:JavaScript通过每个实例对象上的__proto__隐式原型属性,将原型对象进行链接,在通过原型对象的原型属性
再进行链接,以此往复,直到最终的null,这样便形成了JavaScript中的原型链!
1,在js中所有的函数都是由Function构造函数创建的!包括Function自己
2、所有的原型对象都是Object的实例,Object.prototype除外
正常情况下this的指向规则:
1、在全局作用域下访问this,this是指向window
2、当函数以函数形式调用时,this是指向window
3、当函数以 IIFE形式调用时,this是指向window
4、当函数以方法的形式调用时,this指向的是调用者,而非持有者
5、当作为构造函数调用时,this指向一个空对象 {}
除了以上正确情况下this的指向外,还有一些非正常情况!
this的劫持:强行的人为改变this的指向!
实现this劫持的三种方式(基于三个方法):apply call bind
箭头函数,也是函数的一种!但是相比于其他的函数形式,它很特殊!
特殊:
1、写法特殊
2、不能作为构造函数使用
3、它不具备自己的this
4、箭头函数不具备自己的名字
1,通常箭头函数的写法:
(形参列表)=>{
}
2、不能作为构造函数使用,因为箭头函数没有构造器
3、它不具备自己的this,箭头函数的this指向的是,该箭头函数被创建时,当时的作用域下的this
charAt方法
从一个字符串中返回指定位置的字符
语法: str.charAt([index]) []包裹的形参代表的是可选参数,不是必选 index是一个number类型
charCodeAt方法
从一个字符串中返回指定索引下对应字符的编码
indexOf 方法
从当前字符串的指定位置中查找第一个出现的特定的子串的位置索引,
如果查找成功 则放回该子串字符的首字符索引下标,如果未查找成功则返回 -1
语法: str.indexOf(searchValue[,fromIndex])
fromIndex默认值是0
注意:使用indexOf大部分情况不会传入fromIndex
注意:该方法是正向查找!
lastIndexOf 方法
从当前字符串的指定位置中查找第一个出现的特定的子串的位置索引,
如果查找成功 则放回该子串字符的首字符索引下标,如果未查找成功则返回 -1
语法: str.lastIndexOf(searValue[,fromIndex])
fromIndex默认值是0
注意:使用lastIndexOf大部分情况不会传入fromIndex
注意:该方法是反向查找!
incudes方法
判断当前字符串中有没有指定的某个子串,如果有则返回 true 没有则返回false
starsWith方法
判断当前字符串是否以某个指定字符串进行开头 根据情况返回 true 或者 false
endWith方法
判断当前字符串是否以某个指定字符串进行结尾 根据情况返回 true 或者 false
concat 方法
将一个或多个字符串与现有的字符串进行拼接,形成一个新字符串返回
注意:不会影响原字符串
注意:在性能优化下,如果需要实现字符串的合并 推荐使用 + 运算符!
split方法
使用指定的分隔符字符串,将一个string对象进行分割,形成一个字符串数组!
split方法的返回值是一个 Array
注意:如果不传入指定的分隔符,那么则将原字符串一次性返回
split方法有两个参数 1、分隔符字符串 2、指定返回给数组元素个数
slice 方法
截取某个字符串中的一部分,并返回一个新的字符串,不会改变原字符串
slice方法两个参数 1、开始下标 2、结束下标(默认就是截取到最后)
注意:[beginIndex,endIndex)
subString 方法 toLowerCase 方法 toUpperCase 方法 去除字符串的空白字符 at方法 通过指定的数值去返回对应元素!支持负数 push方法 pop方法 unshift方法 shift方法 sort方法 排序 concat 方法 join 方法 splice方法 这段时间学习了JavaScript的基础,感觉学的还是挺不错的,对各个模块的内容也差不多都能理解,感觉还是比较轻松的
返回一个字符串在开始索引到结束索引之间字符串
注意:不支持负数形式!如果为负数,无法进行截取则返回完整的字符串
左边右开的区间
如果biginIndex
将大写字母转换成小写字母
将小写字母转换成大写字母
空白字符:空格 水平制表符tab 换行符 等
trim 去除字符串前后两端的空白符
trimStart 去除开头空白符
trimEnd 去除结尾空白符2,数组
语法规则: at(index) index默认值是0
如果index是负值,那么则从当前元素的后面开始计算!
对当前数组末尾添加一个或多个新元素!该方法改变原数组
返回值:数组最新的length值!
删除当前数组中的最后一个元素,并返回! 也是修改原数组
对当前数组开始位置添加一个或多个新元素!该方法改变原数组
删除当前数组中第一个元素,并返回! 也是修改原数组
该方法是对数组中的元素进行排序,可接受参数,但是参数必须是函数(比较函数)
如果不传入比较函数,他会按照字符编码进行排序
比较函数 :函数体内部主要是做比较运算
连接多个数组,返回一个新数组
将数组中的元素进行合并,通过指定的分隔符! 合并后形成一个字符串并返回
语法规则:join(str)
默认情况 str为’,’
通过该方法可以删除指定元素、修改指定元素、添加指定元素 任意位置
语法规则:splice(index,hm,elmt1,elmt2)
注意:如果省略hm,则将数组清空
返回值:被删除的元素数组6,总结