携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第20天,点击查看活动详情
call
在 JavaScript 中,函数是对象的方法。
如果一个函数不是 JavaScript 对象的方法,那么它就是全局对象的函数
call() 方法是预定义的 JavaScript 方法。
它可以用来调用所有者对象作为参数的方法。
通过 call(),您能够使用属于另一个对象的方法。
var person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
var person1 = {
firstName:"Bill", lastName: "Gates",
}
person.fullName.call(person1);
// 将返回 "Bill Gates"
apply
apply() 方法与 call() 方法非常相似,
不同之处是:
call() 方法分别接受参数。
apply() 方法接受数组形式的参数。
如果要使用数组而不是参数列表,则 apply() 方法非常方便。
bind
bind()方法会创建一个新函数,当这个函数被调用时,this值是传递给bind()的第一个参数,
传入bind方法的第二个以及以后的参数加上绑定函数运行时,本身的参数按照顺序作为作为 原函数的参数来调用原函数。
bind返回的绑定函数也能使用new操作符创建对象,这种行为像把原函数当成构造器,提供的 this值被忽略,同时调用时的参数被提供给模拟函数。
语法:fun.bind(thisArg[, arg1[, arg2[, ...]]])
bind 方法与apply、call最大的不同就是前者返回一个绑定上下文的函数,而后两者是直接执行了函数。
var foo = {
value: 1
};
function bar(name, age) {
return {
value: this.value,
name: name,
age: age
}
};
bar.call(foo, "Jack", 20);
// 直接执行了函数
// {value: 1, name: "Jack", age: 20}
var bindFoo1 = bar.bind(foo, "Jack", 20);
// 返回一个函数 bindFoo1();
// {value: 1, name: "Jack", age: 20}
通过上述代码可以看出bind有如下特性:
- 1、可以指定this
- 2、返回一个函数
- 3、可以传入参数
- 4、柯里化
最后
今天分享结束啦,希望开卷即有益。