首先弄懂apply 和 call 都是js函数自带的方法。区别如下:

apply和call的用法只有一个地方不一样,除此之外,其他地方基本一模一样

1. a.call(b,arg1,arg2…)

2. apply(b,[arg1,arg2]) //apply只有2个参数,它将call的参数(arg1,arg2…)放在一个数组中作为apply的第二参数

例1:apply的第一个参数传递作用域,第二个参数传递数组。

  1. Math.min.apply(null, [1, 2, 3]) 等价于 Math.min(1, 2, 3)    // 1

下面再来看call有哪些用途:

一:实现继承

  1. function Animal(name)
  2. {
  3. this.name=name;
  4. this.showName=function()
  5. {
  6. alert(this.name)
  7. }
  8. }
  9. function Cat(name)
  10. {
  11. Animal.call(this,name); //将Animal应用到Cat上,因此Cat拥有了Animal的所有属性和方法
  12. }
  13. var cat = new Cat(“Black Cat”);
  14. cat.showName(); //浏览器弹出Black Cat

  

二.call方法的定义:

大家在百度里面可以搜索call,关于call的定义都很拗口。在我的理解,a.call(b,arg1,arg2..)就是a对象的方法应用到b对象上。例如如下例子:

  1. function add(a,b)
  2. {
  3. alert(a+b);
  4. }
  5. function reduce(a,b)
  6. {
  7. alert(a-b);
  8. }
  9. add.call(reduce,1,3) //将add方法运用到reduce,结果为4

三.call可以改变this指向

  1. function b()
  2. {
  3. alert(this)
  4. }
  5. b(); //window
  6. b.call(); //window
  7. b.call(“a”,2,3); //a

再看一个复杂的例子:

  1. function Animal()
  2. {
  3. this.name=”animal”;
  4. this.showName=function()
  5. {
  6. alert(this.name)
  7. }
  8. }
  9. function Cat()
  10. {
  11. this.name=”cat”;
  12. }
  13. var animal = new Animal(); //原型继承
  14. var cat = new Cat();
  15. animal.showName(); //结果为animal
  16. animal.showName.call(cat); //原本cat没有showName方法,但是通过call方法将animal的showName方法应用到cat上,因此结果为 cat

  

  

Math.min() / Math.max() 使用方法的更多相关文章

  1. Math.min() Math.max() Math.min().apply() Math.max() .apply()该如何使用???

    Math.min()和 Math.max()  语法: Math.min(x,y) Math.max(x,y) 虽然能取到最小值和最大值,但是不支持数组. 那么如何计算数组中的大小值呢???????? ...

  2. 复习C#的方法Math.Max和Math.Min

    温故而知新,今天学习Math.Max和Min的方法.这2个方法,均需要传入2个参数,返回参数中最大值和最小值. class Ac { public void LeanMathFunction() { ...

  3. JS单体内置对象之Math常用方法(min,max,ceil,floor,round,random等)

    1.min()和max()方法 Math.min()用于确定一组数值中的最小值.Math.max()用于确定一组数值中的最大值. alert(Math.min(2,4,3,6,3,8,0,1,3)); ...

  4. Javascript中的Math.max()和Math.min()

    Math.max()是求最大值,Math.min()是求最小值 Math.max(value1,value2,value3....) 但是如果是数组或者对象呢? var numArr = [1,2,4 ...

  5. js取最小最大值--Math.min()、math.max()

    一.Math.min() 返回一组表达式中最小者 eg: var n = Math.min( 2 , 30 ,1 , 200-10 , 300*22 , 20-30 ); alert(n); //打印 ...

  6. java 常用类库:Math:常用min、max;floor;ceil;random;

    Math //7.取整数小于目标的最大整数(Math.floor(1.2));//8.取整数.获取大于目标的最大整数System.out.println(Math.ceil(1.2)); //18.获 ...

  7. 5.7.2.2 min()和max()方法

    Math对象还包含许多方法,用于辅助完成简单和复杂的数学计算. 其中,min()和max()方法用于确定一组数值中的最小值和最大值.这两个方法都可以接受任意多个数值参数,如下例子: var max = ...

  8. javascript中Math函数的属性与方法

    math函数的属性 Math.PI:返回圆周率. math函数的方法 绝对值: Math.abs(); 对数进行上舍入: Math.ceil(); 对数进行下舍入: Math.floor(); Mat ...

  9. JavaScript -- 时光流逝(四):js中的 Math 对象的属性和方法

    JavaScript -- 知识点回顾篇(四):js中的 Math 对象的属性和方法 1. Math 对象的属性 (1) E :返回算术常量 e,即自然对数的底数(约等于2.718). (2) LN2 ...

随机推荐

  1. 并发编程之 Java 内存模型 + volatile 关键字 + Happen-Before 规则

    前言 楼主这个标题其实有一种作死的味道,为什么呢,这三个东西其实可以分开为三篇文章来写,但是,楼主认为这三个东西又都是高度相关的,应当在一个知识点中.在一次学习中去理解这些东西.才能更好的理解 Jav ...

  2. C# ArrayList的使用方法小总结

    1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和ILis ...

  3. Freemarker出现NullNumberException异常

    Spring Boot项目使用了Freemarker模板引擎. 在ftl文件中使用了一些变量,但是一直出现错误,无法正常渲染页面,反复出现的报错是: freemarker.core.NonNumeri ...

  4. php解释命令行的参数

    php cli模式下,可以用$argc, $argv来读取所有的参数以及个数,如: ghostwu@ghostwu:~/php/php1/1$ cat go1 #!/usr/bin/php <? ...

  5. JS 词法作用域 p2

    关于js 还是写的简短些,利于个人理解: 先看一个例子: var a = 2; function fn(){ var a = 3; console.log(a); } fn(a); 说明:作用域查找会 ...

  6. JS中undefined和null的区别,以及出现原因

    区别:null是一个表示无的对象,转换为数值为0: undefined表示一个无的原始值,转化为数值为NAN(与任何数字相加也为NAN) undefined出现原因:(口诀:一变量二函数一对象) 1. ...

  7. ViewPager实现Recycle机制和响应notifyDataSetChanged

    1.目标 主界面要求水平移动翻页效果,每次只能翻一页,可以翻无数页. 2.实现思路 针对"每次只能翻一页"这个要求,简单使用SDK的话只有用ViewPager.ViewPager的 ...

  8. [性能调优]在PeopleSoft中使用函数索引

    那些没有在PeopleSoft系统遇到性能问题的人,特别是基于Oracle数据库的PeopleSoft,可能不知道基于函数的索引. 根据定义,基于函数的索引是使用如下方法定义的: 基于表达式,例如算术 ...

  9. 活字格Web应用平台学习笔记 7 - 导出 Excel

    活字格一直强调和Excel的兼容,可以导入导出Excel,今天终于学到这一课了. 课程目标: 好吧,就是这么快,已经加了一个“导出到Excel”的按钮了 我以为多高深呢,原来人家都给写好逻辑了,直接选 ...

  10. SQLServer 学习笔记之超详细基础SQL语句 Part 2

    Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 1------------------- 建立如下数据表 CREATE ...