func.apply(obj,args)
将函数应用于作用域之外的其他对象,接受数组形式参数func.call(obj,arg1,arg2,...)
类似apply,可接受多个参数func.bind(obj)(args)
更改函数绑定的this到obj上func.bind(obj,args)
如果第一个参数为null,则this指向全局对象(window)
实现继承
1
2
3
4
5
6
7function Person(name){
this.name=name;
}
function Student(name,school){
Person.apply(this,arguments);
this.school=school;
}不实现继承,只简单调用其他对象的方法
1
2
3
4
5
6
7
8
9
10
11var A = {
name: 'A',
call: function(someone){
console.log(name+ ' calls ' + someone);
}
}
var B = {
name: 'B'
}
A.call('C'); // A calls C
A.call.apply(B,'C'); // B calls C提高程序性能
1
2
3
4arr = [5,6,8];
Math.max(5,6,8); // 8
Math.max(arr); // NaN,输入参数不能是数组
Math.max.apply(null,arr); // 8实现公共方法
1
2
3
4
5
6
7
8var call = function(){
console.log('calls ' + this.name);
};
var A = { name: 'A' };
var B = { name: 'B' };
call.bind(A)(); // calls A
call.bind(B)(); // calls B