1.call()的使用
<script type="text/javascript">
var obj1 = {
name:'bob',
fn:function(){
console.log(this); //对象本身{name: "bob", fn: ƒ}
console.log(this.name); //bob
}
}
obj1.fn();
var obj2 = {
name:'call调用obj1的方法'
}
obj1.fn.call(obj2);//this--->{name: "call调用obj1的方法"} 相当于obj2.name;
obj1.fn.call(this); //指向window指向全局作用域
obj1.fn.call(window); //指向window
//call传递的第一个参数是this指向需要改变的对象,其实就是改变了函数调用时this指向,this指向第一个参数,第二个参数为传给该函数的实参(用逗号隔开)
</script>
2.apply 和 call 的区别
<script type="text/javascript">
var num = 0;
var obj1 ={
num:1,
fn:function(a,b){
console.log(this) //{num: 2}
console.log(this.num) //2
console.log(a+b) //1020
}
}
var obj2 = {
num:2
}
obj1.fn.call(obj2,'10','20');
obj1.fn.apply(obj2,['10','20']);
//call和apply都能进行函数的调用,传参方式不一样call一般参数明确用逗号隔开,apply一般为参数不明确,参数以数组方式
</script>
3.找出数组的最大数(传统)
<script type="text/javascript">
var arr = [1,2,3,4,10];
var num =0;
for (var i=0;i<arr.length;i++) {
if(num<arr[i]){
num = arr[i]
}
}
console.log(num)
</script>
4.用 apply 找出数组的最大值和最小值
<script type="text/javascript">
var arr = [1,2,3,4,10];
var maxNum = Math.max.apply(window,arr);
var minNum = Math.min.apply(null,arr);
console.log(maxNum);//10
console.log(minNum);// 1
</script>
5.bind 的使用
<script type="text/javascript">
var num = 6;
var obj1 = {
num: 10,
fn: function(x, y) {
return this.num + x + y;
}
}
var obj2 = {
num: 8
}
var a = obj1.fn.bind(this, 1, 2)(); //改变函数调用时this指向,此时this是window;
console.log(a)//9
</script>