关于javascript中call与apply与bind的用法
作者:互联网
首先,他们三者最终都是用于改变this的指向。
call与apply的主要作用是让对象能以方法的方式调用函数,有什么用呢?就是对象的方法里面的this指向的是该对象而函数中的this指向的是window,所以改变了this的指向,下面来一个简单的例子
// call与apply是改变this指向 是对象为了以方法的方式调用函数 this指向为括号内第一个参数对象
var name = "李白";
function info(age, sex) {
console.log(this.name + "--" + age + "--" + sex);
}
info(15, "男"); //输出李白--15 因为函数内的this指向window
var lisan = {
name: "李三",
};
info.call(lisan, 67, "女"); //输出李三--67 这时候函数指向lisan这个对象
info.apply(lisan, [67, "女"]); //输出李三--67 这时候函数指向lisan这个对象
info.bind(lisan, 67, "女")(); //输出李三--67 这时候函数指向lisan这个对象
call第一个参数后,是你要给方法传的参数,比如:f.call(object,1,2,3,4,5)
而apply只有两个参数第一个和call一样是对象参数,第二个是数组类型参数,是将你要给方法的参数组成一个数组传入进去,比如:f.apply(object,[1,2,3,4,5])
至于bind,是es5新加的方法,它的定义是,将函数绑定到对象上,这个方法将返回一个新的函数,它的用法和参数与call很像,区别就是他只是绑定没有调用,想要调用方法就要加一个括号,比如f.bind(object,1,2,3,4,5)()
标签:指向,--,bind,javascript,call,67,apply,lisan 来源: https://blog.csdn.net/qq_31659129/article/details/115833875