用途:
每个函数都包含两个非继承而来的方法:call和apply.它们的用途都是在特定作用域当中调用函数,实际上等于设置了函数体内this的值。
语句块:fn.call(obj,arg1,arg2,arg3...) fn.apply(obj,[arry]/arguments)
call和apply最强大的地方是能够扩充函数赖以运行的作用域,实际场景如下:
var name = "复读机", age = 25; function say(){ console.log("name : " + this.name); console.log("age : " + this.age); } var obj = { name : "bb机", age : 30 } say(); //name : 复读机 age : 25 say.call(obj);//name : bb机 age : 30
如果我们不使用call方法,我们是怎么用obj调用say这个函数的呢
var name = "复读机", age = 25; function say(){ console.log("name : " + this.name); console.log("age : " + this.age); } var obj = { name : "bb机", age : 30 } say(); //name : 复读机 age : 25 obj.say = say; obj.say();//name : bb机 age : 30
可以看出用call将会更方便!
时间: 2024-10-22 06:25:39