call  apply  bind 的区别?

  解决函数内this的指向:

    1.可以在函数外提前声明变量 一般情况下我们用   var _this/that=this

    2.通过apply和call来修改函数this指向

    apply和call的区别?

      用法一样,就是参数形式不一样  (案例: fn.call(obj,a,b)     fn.apply(obj,[a,b]))(禁忌:fn为函数但是不能带())

      二者代表函数内的this换成obj之后然后把fn调用

    3.bind修改函数内的this (fn.bind(obj,a,b))只是替换了this,但是不调用fn,返回的还是函数

  bind适合于事件:call  apply适合于全局变量(在原形上继承)

  fn.call(obj)   (call()一个参数必须是对象)

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

  案例:

  function fn(){

    this.name="张三"

    console.log(this.name)

  }

  var obj={

    name:"李四"

  }

  fn.call(obj)  最后的结果还是张三,   他相当于这种写法  fn.prototype.name="李四"

  变量的交换:(举例说明,比如有a杯茶水,还有b瓶饮料,如果想让a杯放饮料,让b瓶放茶水,只能在拿一个空杯,把a杯的茶水放到空杯里面,那么a杯就空了,再把b瓶的饮料,倒进a杯就可以了,那么b杯就空了,再把原来的空杯里面装茶水,倒进b杯就可以了)

  案例:

    var a=4;

    var b=3;

    var n=null;

    n=a;

    a=b;

    b=n;

    console.log(a,b)

  找出数组中最大的值:

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

  1.借助Math中的max;(最简单的方法)

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

  2.借助数组中的sort;

    var fn=function(a,b){

      retrun a-b

      }

    var s=a.sort(fn)

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

  3.假设法:(比较法)

  var max=a[0]

  var num=null;

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

    if(max<a[i]){

      num=max;

      max=a[i];

      a[i]=null;

    }

  console.log(max)

  4.冒泡排序

    var num=null;

    for(var j=a.length-1;j<=0;j--){

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

        if(a[i]<a[i+1]){

          num=a[i];

          a[i]=a[i+1];

          a[i+1]=num

        }

      }

    }

  math数值对象;

    js自带的类 基类:object

         子类:Function(函数) Array(数组)  Number(数字)  String(字符串)  Date(日期)  Math(算术)  RegExp(正则)  Boolean(布尔)

    Math()类   math对象,研究他的属性和方法;

  数学中的弧度与角度

    1弧度=╥/180度   1角度=180/╥弧度

  1.弧度中的╥ Math.PI

  2.返回平方根:Math.sqrt(16) 返回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中的最小值;

  8.Math.random()  返回0-1之间的随机数;

  9.Math.round() 返回四舍五入的数值;

  

  10.Math.sin(x)  返回x的正弦;(对边比斜边)

  11.Math.cos(x) 返回x的余弦; (临边比斜边)

  12.Math.tan(x)  返回x的正切值 (对边比临边)

  13.Math.asin(x)  返回x的反正弦;(知道边求角)

  14.Math.acos(x) 返回x的反余弦; (知道边求角)

  15.Math.atan(x)  返回x的反正切值 (知道边求角)

数组比较大小的几种方法及math是方法的更多相关文章

  1. 【转载】C#使用Math.Ceiling方法对计算结果向上取整操作

    在C#的数值运算中,有时候需要对计算结果进行向上取整操作,支持设定结算结果的有效位数,Math.Ceiling方法是C#中专门用来对数值进行向上取整的方法,此方法和Math.Round方法.Math. ...

  2. js注意点:数组比较大小方法及数组与对象的区别

    (迁移自旧博客2017-04-19) 快速复制数组及数组比较大小方法 首先介绍一下复制数组的方法: var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G']; var ...

  3. Knockout获取数组元素索引的2种方法,在MVC中实现

    原文:Knockout获取数组元素索引的2种方法,在MVC中实现 在遍历数组.集合的时候,通常要获取元素的索引,本篇体验使用Knockout获取索引的2种方法. 假设有这样的一个模型: namespa ...

  4. php数组合并有哪三种方法

    php数组合并有哪三种方法 一.总结 一句话总结:array_merge():array_merge_recursive():‘+'号 $a = array('color'=>'red',5,6 ...

  5. JavaScript 数组去重的那几种方法

    数组去重是最常见的面试题,现在总结一下我所知道的几种 首先第一个就是es5 最常见的循环比较 var array= [1, 1, 2]; function test(nums) { for (var ...

  6. Java中有四种常见的Map实现方法

    在 HTML5 之前我们做图片预览主流做法有两种,第一种是通过 Flash 插件来做预览,第二种是 Ajax 实现的假预览,也就是说选择图片文件后,图片其实已经异步上传到服务器,服务器处理后返回图片路 ...

  7. 在C++的函数中如何指定一个数组,使得这个数组的大小由函数的输入值来决定

    今天调试一个C++程序,在一个函数中定义了一个一维数组,设定数组的大小由函数的输入值来决定. 是这样子的: ]; 然后发现:报错! 报错是这样的: 那么问题来了,在C++中定义数组一定要指定数组大小么 ...

  8. JavaScript---js语法,数据类型及方法, 数组及方法,JSON对象及方法,日期Date及方法,正则及方法,数据类型转换,运算符, 控制流程(三元运算),函数(匿名函数,自调用函数)

    day46 一丶javascript介绍 JavaScript的基础分为三个       1.ECMAScript:JavaScript的语法标准.包括变量,表达式,运算符,函数,if语句,for语句 ...

  9. js中几种实用的跨域方法原理详解(转)

    今天研究js跨域问题的时候发现一篇好博,非常详细地讲解了js几种跨域方法的原理,特分享一下. 原博地址:http://www.cnblogs.com/2050/p/3191744.html 下面正文开 ...

随机推荐

  1. centos7 docker 安装showdoc

    可参考 http://www.showdoc.cc/help?page_id=65610 1.下载代码,并上传服务器 https://github.com/star7th/showdoc 解压之后我的 ...

  2. 关于Java Logger类的使用问题 - 内存不释放

    原文地址:http://www.ihuxu.com/p/236.html   说明:这是一个利用Java Logger类的示例,完成简单的日志记录功能.代码中有部分类库没有说明,但不影响阅读. 本人技 ...

  3. L226

    The dean can’t see you at the moment. He is addressing the first-year students in the lecture hall.系 ...

  4. SQL语句执行过程详解

    一.SQL语句执行原理: 第一步:客户端把语句发给服务器端执行 当我们在客户端执行select语句时, 客户端会把这条SQL语句发送给服务器端,让服务器端的进程来处理这语句.也就是说,Oracle客户 ...

  5. TreeView添加treeView1_NodeMouseClick----多么痛的领悟。。。

    TreeView添加treeView1_NodeMouseClick----多么痛的领悟... 1首先说一点,通过参考代码,已经实现了菜单项自动添加到TreeView控件的树视图了. 2.在移植(菜单 ...

  6. Incremental Method

    「遞增法」是符合電腦運作特性的方法.電腦執行程式,一次只做一個動作,完成了一件事才做下一件事.當一個問題太大太多時,化整為零.一個一個解決吧! 合抱之木,生於毫末:九層之臺,起於累土:千里之行,始於足 ...

  7. 人工智能是如何改变IT运维和DevOps的?

    要解决IT运维和DevOps团队面对的挑战,就是能够在大量的日志数据流中识别潜在的小的有害问题,这正是认知洞察力所做的事情. 接下来的几年里,DevOps(开发软件工程.技术运营和质量保障三者的交集) ...

  8. jmeter随笔(34)-WebSocket协议接口测试实战

    2017年春节结束了,一切再次回归到正轨,我们飞测也开始继续分享,小怪在这里预祝大家在2017年工作顺利,满满的收获. 背景:今天研发哥们QQ我,请教websocket协议的接口测试,这哥们自己开发了 ...

  9. css3 制作平滑过度动画

    -webkit-transition(属性渐变) -webkit-transition:CSS属性(none|all|属性)  持续时间  时间函数  延迟时间 CSS属性(transition-pr ...

  10. liunx用户管理的基本命令

    1.passwd   修改用户密码 2.useradd 用户组名         增加用户组 3.su 用户名     切换用户名 4.usermod   用户更改 5.userdel    用户删除