您的位置:首页 > Web前端 > JavaScript

js中的this解析

2016-07-26 17:27 459 查看
1.作为普通函数调用,this指向window

   准确的说,this为null,但被解释成window

   在ECMAScript标准中,如果this为null,则解释成undefined

 

function t(){
this.xx = 111;
}
t();
alert(window.xx);  //111


2.作为对象的方法来调用

  this指向方法的调用者,即该对象

  作为方法调用事,this指向其调用那一刻的调用者,即母体对象,不管被调用函数声明时属于方法还是函数

var obj = {xx:999,yy:888,t:function(){
alert(this.xx);  //999
}
obj.t();
var dog = {xx:'wangwang'};
dog.t = obj.t;
dog.t();  //wangwang
show = function(){
alert('show'+this.xx);
}
dog.t = show;
dog.t();    //show wangwang


3.函数作为构造函数调用时

function Dog(name,age){
this.name = name;
this.age = age;
a = function(){
alert('this is'+this.name);
}
}
var dog = new Dog(aaa,12);
dog.a();  //this is aaa


var name ='this is window';
var obj = {name:'aaa',t:function(){alert(this.name)};
var dog = {name:'huzi'};
 
obj.t(); //aaa
 
var tmp = obj.t;
tmp();  //this is window
 
dog.t = obj.t;
dog.t();   //huzi
 
(dog.t = obj.t)();  //this is window 此时this为null,又被解释为window,在
ECMAScript标准中则解释成undefined

     (dog.t = obj.t)是一个表达式,返回值是“值”,即t函数,说明不是通过引用调用的,而是立即使用函数本身function(){alert(this.name)

4.函数call  apply调用

 dog.t.call(obj);  //this 指向obj
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息