<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);