
this在定义的时候是确定不了的,只有其在函数执行的时候才能确认值。一般而言,在JavaScript中this指向函数执行时的当前对象,谁调用的就指向谁。
-
作为构造函数调用,this 指代new 出的对象
function Foo(name){ //this={}; this.name=name; //return this; } var f=new Foo('zhangsan'); -
作为对象属性方法调用,this 指代上级对象
var obj={ name:'A', printName:function(){ name:'B'; console.log(this.name); } } obj.printName(); -
作为普通对象函数执行,this指代全局对象
function fn(){ console.log(this);//this===window } fn(); -
在call,apply,bind中使用,此方法的第一个参数为改变后调用这个函数的对象,this指代第一个参数
function fn1(name){ alert(name); console.log(this); } fn1.call({x:100},"zhangsan");//这时fn1中的this就是{x:100} fn1.apply({x:100},["zhangsan",20]);//这时fn1中的this就是{x:100} //bind使用时需要是函数表达式的形式 var fn3 = function (name,age){ alert(name); console.log(this); }.bind({y:200})//这时fn3中的this是{y:200} fn3('zhangsan',20);




近期评论