如下图:
JavaScript 为我们专门提供了一些函数方法来帮我们更优雅的处理函数内部 this 的指向问题,常用的有 bind()、call()、apply() 三种方法。让我们依次来看看它们之间的区别吧。
使用方法:
fun.call(thisArg, arg1, arg2, …)
// 实现继承
function father(name, age) {
this.name = name;
this.age = age;
}
function Son(name, age) {
father.call(this, name, age)
}
var ldh = new Son('ldh', 18);
console.log(ldh);
使用方法:
fun.apply(thisArg, [argsArray])
// 利用数学内置对象求最大值
var arr = [1, 2, 3, 4, 8, 5, 6];
var num = Math.max.apply(Math, arr);
console.log(num); // 8
使用方法:
fun.bind(thisArg, arg1, arg2, …)
例如:我们希望实现以下功能,点击按钮后三秒内禁用,三秒后恢复。
先定义一个按钮
<button>dianji</button>
然后获取按钮,分析需求
// 函数不希望立即调用,同时希望更改this指向
var btn = document.querySelector("button");
btn.onclick = function() {
this.disabled = true;
setTimeout(function() {
this.disabled = false; //this指向window,用bind更改
}.bind(this), 3000);
}
下一篇:JavaScript高级—(5)ES5严格模式
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/qq_46186155/article/details/120338625
内容来源于网络,如有侵权,请联系作者删除!