call和apply的作用实例
<script> var scopeTest = function(){ //考察了 this 的含义 window.a=2; function fn(b){ this.b = b; console.log(this.a); } var obj = {a:4,fn:fn}; /* gl: a = 2 fn obj */ fn();//2 obj.fn();//4 this指向window fn.call(obj);//4 this指向obj fn.call(null);//2 当参数为null时this指向window fn.apply(obj);//4 this指向obj fn.apply(null);//2 当参数为null时this指向window var fninstance = new fn(8);//undefined fn()执行 this指向fninstance console.log(fninstance.b);//8 this指向fninstance 参数为8 }(); </script>
实例2
<script> function fruits() {} fruits.prototype = { color:"red", say: function() {console.log(this.color);} } var apple = new fruits(); apple.say();//red var banana = {color:"yellow"};// apple.say.call(banana);//yellow this指向banana apple.say.apply(banana);//yellow this指向banana </script>
实例3
var obj = { name: 'jim', getName:function(){ console.log( this.name ); } } var obj2 = { name:'tom' } obj.getName.call(obj2);