JavaScript 函数的 bind() 方法详解
bind()
方法允许一个对象借用另一个对象的方法而无需复制。
示例
// 对象定义
const student1 = {
name: "Jack",
grade: "5",
introduction: function () {
console.log(this.name + "studies in grade" + this.grade + ".");
},
};
// 对象定义
const student2 = {
name: "Jimmy ",
grade: " 6",
};
// student2对象借用student1的introduction方法
let result = student1.introduction.bind(student2);
// 调用introduction()函数
result();
// 输出:
// Jimmy studies in grade 6.
bind()语法
bind()
方法的语法是:
func.bind(thisArg, arg1, ...argN);
这里,func
是一个函数。
bind()参数
bind()
可以接受两个参数:
thisArg
- 作为func
的this
参数提供的值。arg1, ... argN
(可选)-func
内部参数的值。
注意: 如果未指定thisArg
,执行范围的this
将被视为thisArg
。
bind()返回值
- 返回给定函数的副本,该副本具有指定的
this
值和初始参数(如果提供)。
示例1:使用bind()方法
// 对象定义
const student1 = {
name: "Jack",
grade: "5",
introduction: function () {
console.log(this.name + "studies in grade" + this.grade + ".");
},
};
// 对象定义
const student2 = {
name: "Jimmy ",
grade: " 6",
};
// student2对象借用student1的introduction方法
let result = student1.introduction.bind(student2);
// 调用result()函数
result(); // Jimmy studies in grade 6.
输出
Jimmy studies in grade 6.
在上述示例中,我们定义了两个对象student1和student2。
由于student2没有introduction()
方法,我们使用bind()
函数从student1那里借用它。
student1.introduction.bind(student2)
返回introduction()
的副本并将其赋值给result。
示例2:使用bind()方法并带有两个参数
// 对象定义
const student1 = {
name: "Jack",
introduction: function (score) {
console.log(this.name + "scored " + score + " in an exam.");
},
};
// 对象定义
const student2 = {
name: "Jimmy ",
};
// 传递两个参数student2和'95'
let result = student1.introduction.bind(student2, 95);
// 调用result()函数
result(); // Jimmy scored 95 in an exam.
输出
Jimmy scored 95 in an exam.
在上述示例中,我们在bind()
中传递了两个参数thisArg和arg1。
student2对象作为this
参数传递,95作为score参数的参数传递。