递归
递归,就是在运行的过程中不断地调用自己。递归有两个过程,简单地说一个是递的过程,一个是归的过程。
闭包
闭包就是 能够读取其他函数内部变量的函数
- 工厂函数是什么?
- 工厂函数是用于创建对象的一个函数。这些内建函数都是类对象,调用时实际上是创建了一个类实例,也就是先利用类创建一个对象,然后返回这个对象,创建的函数都拥有相同的属性。
- 它是一个函数。
- 它用来创建对象。
它像工厂一样,“生产”出来的函数都是“标准件”
数组
unshift 添加到数组第一个 shift删除数组第一个
pop删除数组最后一个 push添加 数组最后一个
concat拼接 slice截取
reverse反转 sort排序
splice是替换和删除 。插入(start,length,item)下标 长度 替换
字符串
substring (start,end)用于提取字符串中两个指定下标之间的字符
substr(start,length) 在字符串中抽取从 start 下标开始的指定数目的字符。
indexof 从数组的(0下标)开始找
lastindexof 从数组的最后一位开始找
回顾:
- Js 更改this指向的三种方法
- call 方法
- 语法:函数名.call(调用者, 参数1, …)
- 作用:函数被借用时,会立即执行,并且函数体内的this会指向借用者或调用者
- apply方法
- 语法:函数名.apply(调用者, [参数, …])
- 作用:函数被借用时,会立即执行,并且函数体内的this会指向借用者或调用者
- bind方法
- 语法:函数名.bind(调用者, 参数, …)
- 作用:函数被借用时,不会立即执行,而是返回一个新的函数。需要自己手动调用新的函数来改变this指向
- 总结:
- 相同点: 三者都可以把一个函数应用到其他对象身上,注意不是自身对象
- 不同点:
- call,apply是直接执行函数调用。bind是绑定,执行需要再次调用。
- call 方法
call,bind接收逗号分隔的无限个参数列表;apply接收数组作为参数。
检测数据类型
typeof :
检测简单数据类型 不能检测复杂数据类型
用于null是返回的是object
function返回的是function
object.prototype.tostring.call
可以检测任何数据类型
instanceof
只能检测复杂数据类型
constructor
判断构造函数
this指向
普通函数 匿名函数 立即执行函数 回调函数 都是指向 window
箭头函数 是函数定义位置上下文this
对象下的的函数 谁调用,就指向谁
dom回调 绑定事件
总结
this总是指向函数的直接调用者
如果有new关键字,this指向new出来的呢个对象
在事件中,this指向目标元素,特殊的IE的attachEvent中的this总是指向全局对象的window