1.解决函数内this指向:
(1)可以在函数外提前声明变量_this/that=this
(2)通过apply和call来修饰函数内的this指向
<1>二者区别 用法是一样的,就是参数形式不一样 fn.call(obj,a,b)/fn.apply(obj,[a,b])
<2>二者代表的是将函数内的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中的所有属性,只要是继承的可以看成是公有的,天生自带的事1私有的,在使用的时候,私有的就不会找公有的。
3.变量交换:
找出数组中的最大项和最小项:
(1)借助math中的max.
Math.max.apply(null,a) 返回值就是最大值;
(2)借助数组中的sort()
(3)假设法 比较法
对数组排序的方法:
(1)借助array中的sort(function(a,b){return a-b})
(2)冒泡排序:
二分查找
4.Math数值对象:
Js自带的类:array function number string boolean date math regexp
Math 类 math对象 又研究一堆的属性和方法
数学中的弧度和角度:
(1)弧度的π Math.PI
(2)返回平方根:Math.sqrt(16)
(3)Math.abs(x):返回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的正切值,对边比邻边;
(13)Math.asin(x)
(14)Math.acos()
(15)Math.atan()
12.4补充:DOM
DOM0级事件元素绑定多个click最后只执行最后一个click;
DOM2级事件元素绑定多个click,都要执行。
注意:当绑定的多个事件名,函数名,事件发生阶段三者完全一样时,才执行最后一个
div.addEventListner("click",fn1,false)
第二个参数尽量不要使用匿名函数。
区别DOM0级和DOM2级:
(1)DOM0级绑定多个相同的事件,后者会覆盖前者,DOM2级不会;
(2)DOM0级只适合普通事件,DOM2级还有指定的事件类型如DOMContentLoaded(当html文档结构加载完成之后执行)这个事件就是jQuery中的$(document).ready()
(3)事件取消:DOM0级事件直接复制null,DOM2级需使用removeEventListner()
键盘事件:onkeydown onkeyup
j键盘事件触发时,浏览器天生给方法一个叫keyBoardEvent的对象,所有键盘的信息都在这个对象上。
我们发现ev有个属性keyCode键盘编码。
鼠标右击事件:ontextmenu