之前为了更好理解js里的call,apply,写了几个小demo
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
function a(){}
a.prototype={
aa:1,
bb:function(){
console.log("this is:"+this.aa)
}
}
var cc=new a
cc.bb()
var a=new a
a.bb()
var dd={
aa:"dd"
}
a.bb.call(dd)
a.bb.apply(dd)
var qq=[1,2,3,4,5,6]
var pp=[7,8,9,10,11]
Array.prototype.push.apply(qq,pp)
console.log(Math.max.apply(Math,pp))
function add(a,b)
{
alert(a+b);
}
function sub(a,b)
{
alert(a-b);
}
var kk=[3,1]
// add.call(sub,3,1);
// 这个例子中的意思就是用 add 来替换 sub,add.call(sub,3,1) == add(3,1) ,所以运行结果为:alert(4);
// sub.apply(add,kk)56
kk[1]=2
// sub.apply(add,kk)
function log(){
console.log.apply(console, arguments);
};
log(1); //1
log(1,2); //1 2
</script>
</body>
</html>