call apply bind 可以改变this对象的指向
第一个参数都是this要指向的对象
区别:
第一个参数后面的参数:
call传参是一个一个传:
apply传参是封装成一个数组:
bind传参的方式与call一样,但是bind方法返回的任然是一个函数
需要在函数外加一个括号来调用
<script>
var p1 = {
name: "张三",
age: 20,
sayName: function(school,grade){
alert(this.name + "在" + school + "上" + grade + "年级");
}
}
var p2 = {
name: "李四",
age: 23
}
//p1.sayName("阳光小学",3)
//p1.sayName.call(p2,"阳光小学",3)
//p1.sayName.call(p2);
//p1.sayName.apply(p2,["阳光小学",3]);
//p1.sayName.bind(p2,"阳光小学",3)();
//p1.sayName.bind(p2)("阳光小学",3);
function add(){
//console.log(arguments);
//arguments.push(10);
[].push.call(arguments,10);
console.log(arguments);
}
add(1,2,3,4,5)
</script>