改变this指针指向的三种方法
Call()
Call(“你想要指向的this方向”,“后面你要跟的参数”)
<script>
function Father(Uname, Uage) {
this.Uname = Uname;
this.Uage = Uage;
}
function Son(Uname, Uage, score) {
Father.call(this, Uname, Uage);
this.score = score;
}
var son = new Son("博人", 12, 18);
console.log(son);
</script>
通过这两张图片的对比,可以看到,我没有给son设置Uname和Uage的属性,但是我却能给它赋值,这就是用Call实现了继承的功能,继承了父类的Uname和Uage
apply()
apply(“你要指向的对象”,一个数组形式的参数)
这种一般我们用来和数学内置公式一起用
bind()
bind(“你要指向的对象”)
这个也是以后较为常用的
<button>关闭</button>
<script>
var btn = document.querySelector("button");
btn.addEventListener("click", function () {
this.disabled = true;
setInterval(function () {
this.disabled = false;
}.bind(this), 2000);
})
通过绑定定时器中的函数指向,让定时器中的函数指向为Button,这样子的话,即使是在定时器的内部函数中,也能指向button这个按钮,帮助我们节省了很多时间
总结
我们可以来看下这三个有什么不同之处
- Call()主要是用来做继承用
- apply()主要可以利用数学内置对象来帮助我们求值,因为一般数学公式内的括号只能放几个数,而直接传递数组进去,可以简化我们的一些步骤.
- bind()主要是用来进行绑定事件,但是又不想页面一开始就执行这个事件,用这个较为合适,这个适用的情况也比较多,前面两个只要一开始就会开始调用.
今天的分享就到此为止了,感谢大家的观看.