1.解决函数内的this指向
(1)可以在函数外提前声明变量 _this/=this
(2)通过apply和call来修改函数内的this指向
二者的区别:
二者的用法不一样,就是参数形式不一样 fn.call(obj,a,b)/fn.apply(obj,[a,b])
二者代表的是将函数内的this换成obj之后然后把fn调用了
(3)bind修改函数内的this
fn.bind(obj,a,b) 只是替换了this但是不调用fn,返回的还是函数
fn.bind(obj,a,b)() 带上()就调用了
2.案例分析
这就相当于写成了下面这种形式
为什么用了call之后里面的names还是张三不是李四?
fn.call(obj)是fn继承了obj中的所有属性,只要是继承的可以看成是共有的,天生自带的是私有的,在使用的时候,私有的有就不会找共有的
3.变量交换
4.找出数组中最大项和最小项
例子:var a=[45,26,15,54,36,8,4]
(1)借助math中的max
Math.max.apply(null,a) 返回值就是最大值
(2)借助数组中sort()
(3)假设法
5.对数组排序的方法
(1)借助array中的sort(function(a,b){return a-b])
(2)冒泡排序
一般用于数据排序 游戏排名
6.Math 数值对象
Js自带的类 array number string function date math regexp boolean
Math类 math对象,研究它的部分属性和方法
数学中的弧度和角度
(1)弧度的 π Math.PI
(2)Math.sqrt(16) 返回平方根
(3)Math.abs(x) 返回的是绝对值
(4)Math.ceil(x) 返回x的上舍入
(5)Math.floor(x) 返回x的下舍入
(6)Math.max(a,b,c,d) 返回a,b,c,d中的最大值(a,b,c,d必须是数字)
(7)Math.min(a,b,c,d) 返回的是a,b,c,d中的最小值(a,b,c,d必须是数字)
(8)Math.random() 返回的是0-1之间的随机数
(9)Math.round(x) 返回对x四舍五入后的值
(10)Math.sin(x) 返回x的正弦值 对边比斜边
(11)Math.cos(x) 返回x的余弦值 邻边/斜边
(12)Math.tan(x) 返回x的正切值 对边/邻边