阅读下面程序给出结果:
<script>
var length= 10;
function fn(){
console.log(this.length);
}
var obj ={
length:5,
method:function(fn ){
fn();//函数调用的方式 this指向的是window
fn.call(obj); //对象.方法 属于方法调用 this指向的是对象 相当于:obj.fn()
arguments[0](); // 方法调用: argument[0]() ==> fn() ;this指向的是argument =>arguments.length
}
};
obj.method(fn); // 10 5 1
</script>
总结:
This指向如何分析
分析this是属于哪个函数这个函数调用模式是哪一种
函数调用模式:
函数调用模式:函数名()==>> window方法调用模式:对象.方法()==>> 调用方法的对象(obj.fn() / obj[“fn”]() ).[注意啊:以后看见
点语法、中括号语法,就是属于方法调用的模式,例如:arr[0]( )==>arr.0()指向的是arr]构造函数模式==>>指向实例对象 上下文模式/借用模式 (call/apply):this指向是动态的