JavaScript中的call,apply,bind的使用
一、call
call(thisObj,arg1,arg2,arg...)
定义:调用一个对象的方法,以另一个对象替换当前对象。
说明:call方法可以用来代替另一个对象调用一个方法。
call方法可以将一个函数对象的上下文改变为由thisObj指定的新对象。
thisObj的取值有以下几种情况:
(1)不传,或者为null,undefined时,函数中的this指向window对象;
(2)传递另一个函数的函数名,函数中的this指向这个函数的引用;
(3)传递基础类型数据时,函数中的this指向其对应的包装对象;
(4)传递一个对象时,函数中的this指向这个对象。
专业领域包括成都网站制作、成都做网站、电子商务商城网站建设、微信营销、系统平台开发, 与其他网站设计及系统开发公司不同,创新互联公司的整合解决方案结合了帮做网络品牌建设经验和互联网整合营销的理念,并将策略和执行紧密结合,为客户提供全网互联网整合方案。
例1--> 调用Math的max方法实现对一串数字的排序:
例2--> 调用fn1的方法打印fn2中的信息
例3--> 实现继承:
Fn1.call(this)的意思是使用Fn1对象替代this对象,则fn2就可以调用Fn1的所有属性和方法。
二、apply
语法:apply(thisObj,argArray)
定义:应用某一对象的一个方法,用另一个对象替换当前对象。
说明: 如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。
如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。
功能同call,传参方式不一样。举例参考call,此处略。
三、bind
bind方法创建一个新的函数,MDN上这样介绍:
bind()方法创建一个新的函数(称为绑定函数),当函数被调用时,其this关键字被设置为提供的值,在调用新函数时,提供一个给定的参数序列。
function.bind(thisObj,arg1,arg2,arg3):参数thisObj表示:当绑定的函数被调用时,this的指向为该参数。当使用new操作符调用绑定函数时,参数thisObj无效。参数arg1,arg2,...表示:当绑定函数被调用时,这些参数将置于实参之前传递给被绑定的方法。
this.name="jack"
var demo={
name:"lily",
getName:function(){return this.name}
}
var name1= demo.getName;
console.log(name1())
var name2 = name1.bind(demo)
console.log(name2())
结果:
jack
lily
console.log(name1()) //输出jack,这里的this指向全局对象
console.log(name2()) // 输出lily, 这里的this指向name对象
给函数预设初始值:
var add = function(x,y){return x+y}
var add_curr = add.bind(null,2)
add_curr(3)
结果: 5
分享题目:JavaScript中的call,apply,bind的使用
文章URL:http://scyanting.com/article/ghopjd.html