javascript apply and call

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var add = function(a,b){
this.alias = "ADD";
return a + b;
}


var sub = function(a,b){
this.alias = "SUB";
return a-b
}

add(5,3) ; //8
add.call(sub,5,3);//8
add.apply(sub,[5,3]);//8

都是8好像sub没什么用啊,主要是因为 add 和 sub 这两个方法没有用到 this 这个对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var add = function(a,b){

return a + this.alias + b;
}

add.alias = "+";


var sub = function(a,b){

return a + this.alias+ b;
}

sub.alias = "-";

add(5,3) ;//NaN
add.call(sub,5,3); //'5-3'
add.apply(sub,[5,3]); //'5-3'

虽然运行了add的方法 ,但是用到了sub对象的参数(this.alias)