javascript方法--apply()
今天琢磨了一下apply,以前对这个方法觉得比较懵,今天一琢磨确实觉得挺好玩的。
一开始把MDN的apply文档看了一遍,感觉不是很理解,而且有一些东西也是知道但是比较模糊,所以还是一步一步来,不懂查查文档,于是乎,来说一下理解顺序~
首先,要先理解一下两个概念,constructor 和 prototype
constructor
解释:
这个属性可以找到对象的构造函数
prototype
解释:
可以添加对象的属性和方法
使用该属性给构造函数添加属性或方法时,继承自该构造函数的新对象也会有该属性或方法
新对象会拥有新增方法或属性,但是打印出原构造函数是不变的,访问构造函数的新增属性或方法也是没有的
接着,来学习一个创建对象的方法
var myObject = {
"a":{
},
"b":{
value:11
}
}
最后,就是apply方法啦
fun.apply(this,[array])
解释:
让fun函数在this作用域下运行,array则作为参数传给fun函数
当this为null或underfined时,默认指定全局对象
apply会把array转化为也参数列表
利用apply实现高效率
Math.min([1,2,3]);//不允许
Math.min(1,2,3);//允许
Math.min.apply(null,[array]);//求数组中的最小值,null是在全局环境下
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()的更多相关文章
- Javascript 方法apply和call的差别
call与aplly都属于Function.prototype的一个方法.所以每一个function实例都有call.apply属性 同样点: call()方法和apply()方法的作用同样: 改变原 ...
- 关于javascript中apply()和call()方法的区别
如果没接触过动态语言,以编译型语言的思维方式去理解javaScript将会有种神奇而怪异的感觉,因为意识上往往不可能的事偏偏就发生了,甚至觉得不可理喻.如果在学JavaScript这自由而变幻无穷的语 ...
- JavaScript方法call、apply、caller、callee、bind的使用详解及区别
一.call 方法 调用一个对象的一个方法,以另一个对象替换当前对象(其实就是更改对象的内部指针,即改变对象的this指向的内容). 即 “某个方法”当做“指定的某个对象”的“方法”被执行. Js代 ...
- JavaScript方法call,apply,caller,callee,bind的使用详解及区别
一.call 方法 调用一个对象的一个方法,以另一个对象替换当前对象(其实就是更改对象的内部指针,即改变对象的this指向的内容). 即 “某个方法”当做“指定的某个对象”的“方法”被执行. Js代 ...
- JavaScript中apply与call方法
一.定义 apply:应用某一对象的一个方法,用另一个对象替换当前对象. call:调用一个对象的一个方法,以另一个对象替换当前对象. 二.apply //apply function Person( ...
- 每天一个JavaScript实例-apply和call的使用方法
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- (转)深入浅出 妙用Javascript中apply、call、bind
原文连接 深入浅出 妙用Javascript中apply.call.bind 网上文章虽多,大多复制粘贴,且晦涩难懂,我希望能够通过这篇文章,能够清晰的提升对apply.call.bind的认识,并且 ...
- javascript中apply、call和bind的区别,容量理解,值得转!
a) javascript中apply.call和bind的区别:http://www.cnblogs.com/cosiray/p/4512969.html b) 深入浅出 妙用Javascrip ...
- 解析JavaScript中apply和call以及bind
函数调用方法 在谈论JavaScript中apply.call和bind这三兄弟之前,我想先说下,函数的调用方式有哪些: 作为函数 作为方法 作为构造函数 通过它们的call()和apply()方法间 ...
随机推荐
- [牛客练习赛29D]禁止动规
description newcoder 你在一个无限长的数轴上,一开始你在原点 本来你只有两种操作:向左dp,以及向右dp 然而由于禁止dp 于是你只能另寻出路 万幸的是,dp之神随机给了你n个变量 ...
- 51nod 1962 区间计数(单调栈+二分)
维护两个单调递减的栈,当i加进栈,位置x的数弹出的时候,在另一个栈中找到和这个数一样大的数,计算贡献(x-靠右左端点)*(i-x). #include<iostream> #include ...
- Poco::URI
#include<iostream> #include<typeinfo> #include<Poco/Path.h> #include <Poco/Dire ...
- Emmet缩写语法
缩写语法 Emmet 使用类似于 CSS 选择器的语法描述元素在生成的文档树中的位置及其属性. 元素 可以使用元素名(如 div 或者 p)来生成 HTML 标签.Emmet 没有预定义的有效元素名的 ...
- PC蓝牙通信C#代码实现
PC蓝牙通信C#代码实现 这篇文章主要为大家详细介绍了PC蓝牙通信C#代码实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了C#实现PC蓝牙通信代码,供大家参考,具体内容如下 ...
- Codeforces Round #393 (Div. 2) (8VC Venture Cup 2017 - Final Round Div. 2 Edition)A 水 B 二分 C并查集
A. Petr and a calendar time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- C语言函数的变参实用与分析
实现变参传递的关键是: 传入参数在内存中是连续分布的. #define va_list void* #define va_arg(arg, type) *(type*)arg; arg = (char ...
- html 让一行文字居中
文本在行高范围内垂直居中 可以利用行高特性让一行文本居中 line-height:100px://父容器的高度
- Ubuntu12.04 安装nginx和mongo过程
1.安装php和php-cgi apt-get install php5 php5-cgi 2.安装 nginx apt-get install nginx 3.安装 MongoDB apt-get ...
- HDFS error
错误信息描述: HDFS error: could only be replicated to 0 nodes, instead of 1;以及由此衍生出来的种种奇葩问题(具体的错误信息见后面),下面 ...