js高级 3

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,返回的还是函数

2.

  相当于写成

  为什么用了call之后里面的names还是张三不是李四??

  fn.call(obj)是fn继承了obj中的所有属性,只要是继承的可以看成是公有的,天生自带的是私有 的,在使用的时候,私有的有就不会找公有的。

3.变量交换

  var a=4;

  var b=3;

  var n=null;

  n=a;

  a=b;

  console.log(a,b)

  找出数组中的最大项和最小项

  var a=[45,26,15,54,36,8,4];

  1.借助math中的max

  Math.max.apply(null,a)返回值就是最大值

  2.借助数组找的sort()

  var fn=function(a,b){

    return a-b

  }

   var s=a.sort(function(a,b){return a-b})

   console.log(s[s.length-1])

  3.假设法

  var min=a[0]    //假设第一个就是我们需要的最小值

  var num=null;

  for(var i=1;i<a.length;i++){

    if(min>a[i]){

      num=min;

      min=a[i];

      a[i]=num

    }

  }

  console.log(min)

  对数组排序的方法

  1.借助array中的sort(function(a,b){return a-b})

  2.冒泡排序

  var arr=[45,26,15,54,36,8,4]

  var  num=null

   for(var j=arr.length-1;j>=0;j--){

    for(var i=0;i<=j;i++){

          if(arr[i]>arr[i+1]){

              num=arr[i];

              arr[i]=arr[i+1];

              arr[i+1]=num

           }

       }

    }

4.Math数值对象

  js自带的类 array number string function date math regexp boolean

  Math类math对象有研究一堆的属性和方法

  数学中的弧度和角度

  1.弧度的π  Math.Pl

  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的正切值 对边/邻边

  13.Math.asin(x)

  13.Math.asin(x)

  14.Math.acos() 

  15.Math.atan()

 

fanhu    //for(var i=0;i<arr.length-k;i++){

posted @ 2019-01-10 17:05  做自己的盖世英雄  阅读(170)  评论(0编辑  收藏  举报