**
js中改变this指向的几种方法
**
1.call()
既可以改变this指向也可以调用父函数的属性
语法
<script>
function Father(a){
this.a = a
}
function Son(a){
Father.call(this,a)
}
var son = new Son(1) //可以传任意值 主要作用:继承
console.log(son); //1
</script>入代码片
2.apply()
改变内部this指向,以数组形式传递参数
语法
var f = {
name: 'xx'
}
function Son(arr) {
console.log(this); // {name:'xx'}
console.log(arr); //pink
}
Son.apply(f, ['pink']) //传递的是数组
//一般用来求数组的最大值最小值
var arr = [11,25,39]
var max = Math.max.apply(Math,arr)
var min = Math.min.apply(Math,arr)
console.log(max,min);
bind()
不会调用原来的函数,可以改变原来函数中的this,返回的是原函数改变this后产生的新函数
bind 常用于不需要立即调用函数,但又要改变这个函数内部this指向时调用
var f={
name:'xx'
}
function Son(){
console.log(this);
}
var son = Son.bind(f) //改变了this指向 但不会被调用
son() //用新函数接受调用后 this指向 原函数改变后的新函数 {name:'xx'}