ES5函数新增的方法(call、apply、bind)
1.call()的使用
<script type="text/javascript">
var obj1 = {
name:'bob',
fn:function(){
console.log(this); //对象本身{name: "bob", fn: ƒ}
console.log(this.name); //bob
}
}
obj1.fn();
var obj2 = {
name:'call调用obj1的方法'
}
obj1.fn.call(obj2);//this--->{name: "call调用obj1的方法"} 相当于obj2.name;
obj1.fn.call(this); //指向window指向全局作用域
obj1.fn.call(window); //指向window
//call传递的第一个参数是this指向需要改变的对象,其实就是改变了函数调用时this指向,this指向第一个参数,第二个参数为传给该函数的实参(用逗号隔开)
</script>
2.apply 和 call 的区别
<script type="text/javascript">
var num = 0;
var obj1 ={
num:1,
fn:function(a,b){
console.log(this) //{num: 2}
console.log(this.num) //
console.log(a+b) //
}
}
var obj2 = {
num:2
}
obj1.fn.call(obj2,'10','20');
obj1.fn.apply(obj2,['10','20']);
//call和apply都能进行函数的调用,传参方式不一样call一般参数明确用逗号隔开,apply一般为参数不明确,参数以数组方式
</script>
3.找出数组的最大数(传统)
<script type="text/javascript">
var arr = [1,2,3,4,10];
var num =0;
for (var i=0;i<arr.length;i++) {
if(num<arr[i]){
num = arr[i]
}
}
console.log(num)
</script>
4.用 apply 找出数组的最大值和最小值
<script type="text/javascript">
var arr = [1,2,3,4,10];
var maxNum = Math.max.apply(window,arr);
var minNum = Math.min.apply(null,arr);
console.log(maxNum);//10
console.log(minNum);// 1
</script>
5.bind 的使用
<script type="text/javascript">
var num = 6;
var obj1 = {
num: 10,
fn: function(x, y) {
return this.num + x + y;
}
}
var obj2 = {
num: 8
}
var a = obj1.fn.bind(this, 1, 2)(); //改变函数调用时this指向,此时this是window;
console.log(a)//
</script>
ES5函数新增的方法(call、apply、bind)的更多相关文章
- 带你学习ES5中新增的方法
1. ES5中新增了一些方法,可以很方便的操作数组或者字符串,这些方法主要包括以下几个方面 数组方法 字符串方法 对象方法 2. 数组方法 迭代遍历方法:forEach().map().filter( ...
- 前端学习之回调函数、call方法、apply方法
今天学习的内容比较少,大部分时间是自己在写qq音乐和京东移动端的页面.现在说说今天学到的内容: 首先,回调函数,就是在函数内部中调用另外一个函数, 将一个函数当作参数传给另一个函数,被传的函数叫做回调 ...
- ES5对象新增的方法
Object.is()-----判断是否全等,和===一样Object.assign()-----对象的复制Object.keys()-----以数组的形式返回所有可遍历属性的键名,原型上的属性不能遍 ...
- Es5数组新增的方法及用法
1.forEachforEach是Array新方法中最基本的一个,就是遍历,循环.例如下面这个例子: [1, 2 ,3, 4].forEach(alert);等同于下面这个传统的for循环: var ...
- 《JS权威指南学习总结--8.7 函数属性、方法和构造函数》
内容要点: 在JS程序中,函数是值.对函数执行typeof运算会返回字符串 "function",但是函数是JS中特殊的对象.因为函数也是对象,它们也可以拥有属性和方法,就像普 ...
- Function.apply.bind()与Function.apply.bind()
1.Function.apply.bind(…) 我在学习promise部分的时候遇到了这样的代码: Promise.resolve([10,20]).then(Function.apply.bind ...
- 作用域链和函数内部this指向问题以及bind、call、apply方法
作用域链和函数内部this指向问题以及bind.call.apply方法 作用域链 作用域是相对于变量而言的, 其意义就在与查找变量(确定变量的来处, 变量是否可以访问到, 确定变量在当前位置是否可以 ...
- call,apply,bind——js权威指南函数属性和方法章节读书笔记
每个函数(即这两个方法是函数的方法)都包含两个非继承而来的方法: apply()和 call().参数明确,使用call.参数不明确,使用apply,可以遍历数组参数 1,call里面的参数是散开的, ...
- JS 的 call apply bind 方法
js的call apply bind 方法都很常见,目的都是为了改变某个方法的执行环境(context) call call([thisObj[,arg1[, arg2[, [,.argN]]]] ...
随机推荐
- Python(2)(基本输入输出语句)
我们先来说输出:
- Linux 命令行命令及参数辨异
1. 软链接与硬链接 ln -s 源文件 目标文件 当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目 ...
- VMware Ubuntu 共享文件夹
/**************************************************************************** * VMware Ubuntu 共享文件夹 ...
- (转)Vim自动补全神器:YouCompleteMe
原文出处:http://blog.jobbole.com/58978/ 第一次听说这个插件还是在偶然的情况下看到别人的博客,听说了这个插件的大名.本来打算在实训期间来完成安装的,无奈网实在不给力,也就 ...
- maven(一)创建一个maven的web项目
一.创建项目 1.Eclipse中用Maven创建项目 上图中Next 2.继续Next 3.选maven-archetype-webapp后,next 4.填写相应的信息,Packaged是默认创建 ...
- nodejs 全局对象 global
nodejs中有一个全局对象 global,所有的全局变量都是global对象的属性,glabal最根本的作用是作为全局变量的宿主, 全局变量: 1 在最外层定义的变量 2 全局对象的属性 3 隐式定 ...
- 笔记本创建wifi热点
如何在Win8系统上建立WIFI热点 | 浏览: 2511 | 更新: 2013-04-10 01:55 | 标签: win8 59 28 全文阅读分步阅读 步骤 1 2 3 4 5 6 7 8 ...
- 【211】win10快捷键大全
参考:win10快捷键大全 win10常用快捷键 • 贴靠窗口:Win +左/右> Win +上/下>窗口可以变为1/4大小放置在屏幕4个角落 • 切换窗口:Alt + Tab(不是新的, ...
- 看鸟哥的Linux私房菜的一些命令自我总结(一)
-显示目前所支持的语言 echo &LANG -修改语言成为英文系统 LANG=en_US -显示日历的命令 cal [[month] year] -惯用关机命令 shutdown 参数: ...
- 51nod1127【尺取】
思路: 尺取,写挫了,debug了半天. #include <bits/stdc++.h> using namespace std; typedef long long LL; const ...