js中的this解析
2016-07-26 17:27
459 查看
1.作为普通函数调用,this指向window
准确的说,this为null,但被解释成window
在ECMAScript标准中,如果this为null,则解释成undefined
2.作为对象的方法来调用
this指向方法的调用者,即该对象
作为方法调用事,this指向其调用那一刻的调用者,即母体对象,不管被调用函数声明时属于方法还是函数
3.函数作为构造函数调用时
(dog.t = obj.t)是一个表达式,返回值是“值”,即t函数,说明不是通过引用调用的,而是立即使用函数本身function(){alert(this.name)
4.函数call apply调用
dog.t.call(obj); //this 指向obj
准确的说,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
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 设计模式---状态模式在web前端中的应用
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- Redux系列02:一个炒鸡简单的react+redux例子