您的位置:首页 > 移动开发

apply、call、bind方法

2018-04-03 10:56 295 查看

apply、call

call和apply方法是在看高程时函数相关学到的:每个函数都有包含非继承而来的方法:apply()、call()

用途

在特定的作用域中调用函数(相当于设置函数体内的this对象,扩充函数运行的作用域)

用法

call() 与apply() 方法作用相同, 接收两个参数(运行函数的作用域、参数

两者区别在于接收参数的方式不同:apply 数组传参,call传参需要 逐个列举

应用

由于apply和call可以设置函数体内的this的特性,在javascript实现继承的方式中的借用构造函数和组合继承:用apply / call方法,在子类型构造函数内部调用超类型构造函数

//组合继承
function SubType(name,age){
SuperType.call(this,name);//借用构造函数
this.age = age;
}

SubType.prototype = new SuperType();//原型链


bind

bind() 方法与 apply 和 call 很相似,也是可以改变函数体内 this 的指向。

bind方法的返回值是函数

var bar = function(){
console.log(this.x);
}
var foo={
x:3
}
bar();  //undefined
bar.bind(foo)(); //3
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: