今天琢磨了一下apply,以前对这个方法觉得比较懵,今天一琢磨确实觉得挺好玩的。

一开始把MDN的apply文档看了一遍,感觉不是很理解,而且有一些东西也是知道但是比较模糊,所以还是一步一步来,不懂查查文档,于是乎,来说一下理解顺序~

首先,要先理解一下两个概念,constructor 和 prototype

constructor

解释:

这个属性可以找到对象的构造函数

prototype

解释:

可以添加对象的属性和方法

使用该属性给构造函数添加属性或方法时,继承自该构造函数的新对象也会有该属性或方法

新对象会拥有新增方法或属性,但是打印出原构造函数是不变的,访问构造函数的新增属性或方法也是没有的

接着,来学习一个创建对象的方法

Object.create(proto,[,arguments])
解释:
创建一个指定原型和若干指定属性的对象
proto一定要是要是原型,而不是函数,不然的话继承到的原型就是Function
第二个参数是可选的,不包含对象上原型链上的属性
对于第二个参数是传入的属性,要注意这个参数的格式,该参数是一个对象,有名称和属性,属性要用对象的格式拼写,如下
 var myObject = {
"a":{ },
"b":{
value:11
}
}

最后,就是apply方法啦

fun.apply(this,[array])

解释:

让fun函数在this作用域下运行,array则作为参数传给fun函数

当this为null或underfined时,默认指定全局对象

apply会把array转化为也参数列表

利用apply实现高效率

1.求数组中的最小项
Math.min.apply(null,array);
 Math.min([1,2,3]);//不允许
Math.min(1,2,3);//允许
利用apply会把传入的数组转化为参数列表,就可以轻易得出数组中的最小值
 Math.min.apply(null,[array]);//求数组中的最小值,null是在全局环境下
同理,求数组中的最大值也是可以用这种方法
 
2.实现数组的拼接
Array.prototype.push.apply(array1,array2);
数组的拼接同样是利用了apply会把传入的数组转化为参数列表这个特性,因为push会将数组作为一个元素添加到数组中
 var array1 = [1,2];
var array2 = [3,4];
array1.push(5,6);//[1,2,5,6]
array1.push([7,8]);//[1,2,5,6,[7,8]] Array.prototype.push.apply(array1,array2);//[1,2,5,6,[7,8],3,4]

apply的知识点就总结完啦~不过还是要多实践,一开始的时候我还是会搞错,所以还是要理论结合实际~

注:希望大家多给意见哈,谢谢~

javascript方法--apply()的更多相关文章

  1. Javascript 方法apply和call的差别

    call与aplly都属于Function.prototype的一个方法.所以每一个function实例都有call.apply属性 同样点: call()方法和apply()方法的作用同样: 改变原 ...

  2. 关于javascript中apply()和call()方法的区别

    如果没接触过动态语言,以编译型语言的思维方式去理解javaScript将会有种神奇而怪异的感觉,因为意识上往往不可能的事偏偏就发生了,甚至觉得不可理喻.如果在学JavaScript这自由而变幻无穷的语 ...

  3. JavaScript方法call、apply、caller、callee、bind的使用详解及区别

    一.call 方法 调用一个对象的一个方法,以另一个对象替换当前对象(其实就是更改对象的内部指针,即改变对象的this指向的内容). 即  “某个方法”当做“指定的某个对象”的“方法”被执行. Js代 ...

  4. JavaScript方法call,apply,caller,callee,bind的使用详解及区别

    一.call 方法 调用一个对象的一个方法,以另一个对象替换当前对象(其实就是更改对象的内部指针,即改变对象的this指向的内容). 即  “某个方法”当做“指定的某个对象”的“方法”被执行. Js代 ...

  5. JavaScript中apply与call方法

    一.定义 apply:应用某一对象的一个方法,用另一个对象替换当前对象. call:调用一个对象的一个方法,以另一个对象替换当前对象. 二.apply //apply function Person( ...

  6. 每天一个JavaScript实例-apply和call的使用方法

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  7. (转)深入浅出 妙用Javascript中apply、call、bind

    原文连接 深入浅出 妙用Javascript中apply.call.bind 网上文章虽多,大多复制粘贴,且晦涩难懂,我希望能够通过这篇文章,能够清晰的提升对apply.call.bind的认识,并且 ...

  8. javascript中apply、call和bind的区别,容量理解,值得转!

    a)  javascript中apply.call和bind的区别:http://www.cnblogs.com/cosiray/p/4512969.html b)  深入浅出 妙用Javascrip ...

  9. 解析JavaScript中apply和call以及bind

    函数调用方法 在谈论JavaScript中apply.call和bind这三兄弟之前,我想先说下,函数的调用方式有哪些: 作为函数 作为方法 作为构造函数 通过它们的call()和apply()方法间 ...

随机推荐

  1. 923c C. Perfect Security

    Trie树. 要求字典序最小,所以由前到后贪心的选择.建一个trie树维护b数列. #include<cstdio> #include<algorithm> #include& ...

  2. BZOJ1058:[ZJOI2007]报表统计——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=1058 https://www.luogu.org/problemnew/show/P1110#su ...

  3. BZOJ4103 [Thu Summer Camp 2015]异或运算 【可持久化trie树】

    题目链接 BZOJ4103 题解 一眼看过去是二维结构,实则未然需要树套树之类的数据结构 区域异或和,就一定是可持久化\(trie\)树 观察数据,\(m\)非常大,而\(n\)和\(p\)比较小,甚 ...

  4. 【BZOJ 1998】[Hnoi2010]Fsk物品调度 置换群+并查集

    置换群的部分水得一比,据说是经典的置换群理论(然而我并不知道这理论是啥).重点就在于怎么求pos!!!容易发现这个东西是这样的:每次寻找pos,先在本环里找,找不到再往下一个环里找,直到找到为止……一 ...

  5. shell运用

    在shell脚本一 中,我讨论了shell脚本的语法规范,shell脚本的变量,以及shell脚本的测试语句. 仅仅懂得这些只能写简单的脚本,在简单的脚本中各条语句按顺序执行,从而实现自动化的管理,顺 ...

  6. HDU3666 差分约束

    THE MATRIX PROBLEM Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  7. 基于Bootstrap的遮罩层,带有加载提示

    1.body中的html <div class="modal fade" id="loadingModal"> <div style=&quo ...

  8. mysql 修改max_connections

    1.使用命令show variables 来查看当前最大连接数 show variables like '%max_connections%'; 使用命令set global max_connecti ...

  9. CharSequence 去除两端空格

    CharSequence就是字符序列,String, StringBuilder和StringBuffer都是其实现类. 模仿String.trim() 实现了一个CharSequence通用的去除两 ...

  10. 奇偶排序Odd-even sort

    又一个比较性质的排序,基本思路是奇数列排一趟序,偶数列排一趟序,再奇数排,再偶数排,直到全部有序 举例吧, 待排数组[6 2 4 1 5 9] 第一次比较奇数列,奇数列与它的邻居偶数列比较,如6和2比 ...