call() apply()以及bind() Math

 

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

 

 

 

 

原文地址:https://www.cnblogs.com/yuanjingjing/p/10097364.html