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]]]] ...
随机推荐
- holiday题解
题目描述如下: 经过几个月辛勤的工作,FJ 决定让奶牛放假.假期可以在 1…N 天内任意选择一段(需要连续),每一天都有一个享受指数 W.但是奶牛的要求非常苛刻,假期不能短于 P 天,否则奶牛不能得到 ...
- codevs1258关路灯
传送门 1258 关路灯 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 多瑞卡得到了一份有趣而高薪的工作.每天早晨他 ...
- Linux 命令 -- tar
tar 命令 tar命令可以为linux的文件和目录创建档案.利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件.tar最初被用来在磁带上创建档案,现 ...
- 算法练习--LeetCode--17. Letter Combinations of a Phone Number
Letter Combinations of a Phone NumberMedium Given a string containing digits from 2-9 inclusive, ret ...
- web服务端的架构演变
此文已由作者肖凡授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 最近Lofter项目碰到很多性能上的问题,特别是数据库相关的,每次推送后,告警就会第一时间到来.这些问题随着产 ...
- 704. Binary Search
Given a sorted (in ascending order) integer array nums of n elements and a target value, write a fun ...
- poj1511【最短路spfa】
题意: 计算从源点1到各点的最短路之和+各点到源点1的最短路之和: 思路: 源点这个好做啊,可是各点到源点,转个弯就是反向建边然后求一下源点到各点的最短路,就是各点到源点的最短路,在两幅图里搞: 贴一 ...
- lightoj 1125【01背包变性】
题意: 从n个数里选出m个来,还要使得这m个数之和被d整除. 给一个n和q,再给n个数,再给q个询问,每个询问包含两个数,d,m; 对于每个case输出每个q个询问的可行的方案数. 思路: 每个数只能 ...
- c#数据类型和类型转换
C# 数据类型 在 C# 中,变量分为以下几种类型: 值类型(Value types) 引用类型(Reference types) 指针类型(Pointer types) 值类型(Value type ...
- PopupWindow(1)简介
PopupWindow有点类似于Dialog,相同点在于都是弹出窗口,并且都可以对其进行自定义显示,并且里面的监听组件,进行相应的操作,但它与Dialog又有很大的区别,PopupWindow只是弹出 ...