虫虫舞的web实验室

千里奔袭,跋山涉水,只为她的优美

js中的this

一般而言,在Javascript中,this指向函数执行时的当前对象

var obj={name:”Sun”}
console.log(obj.name) //–>Sun

this关键字在Javascript中和执行环境,而非声明环境有关

var name=”gname”
var nameTemp={
showName:function(){alert(this.name)} //声明公用模板对象,功能是输出名称,可供其他对象引用,此处理解为 谁引用了函数showName,this就指向谁;
}
var obj={name:”Tom”,
showName:nameTemp.showName} // 此处obj属性showName引用模板函数showName;则模板函数数据将会被覆盖,可使用构造函数方式解决这个问题;
obj.showName(); //–>Tom,执行环境对象为obj,所要this指向obj

环 境 this指向 说明
没有明确当前对象时 全局对象window 默认当作是window方法运行
局部变量引用的函数 全局对象window 无法解释
setTimeoutsetInterval 全局对象window 他们是window方法,自然指向window
运行匿名函数时 全局对象window

【全局对象】
浏览器状况下的是 window,
其他情况下如node.js的全局对象就叫全局对象the global object

例如

var name=”win”;

var obj1={
name:”Bob”,
showName:function(){alert(this.name)}
};

var obj2={
name:”Tom”,
showName:function(){
var fun=obj1.showName;//将obj1的方法showName的指针复制给fun,此时得到一个fun()方法
fun();
}}

var show=obj1.showName;
show(); //–>win,可以当作是window调用方法show(),所以this指向的是window对象
obj2.showName(); //–>win, this原本应该指向对象obj2,但是局部变量showName 再引用 此变量内的局部函数fun(),this却任然指向window对象

: 总结:**直接调用方法**,this指向window对象
局部变量引用的函数,this指向window对象

正确的设计方式:内部函数的 this 应该绑定到其外层函数对应的对象上

阅读更多
个人分类: javascript
想对作者说点什么? 我来说一句

js中正则表达式的使用

2011年11月15日 22KB 下载

Js中去掉空格经典代码

2011年06月24日 1KB 下载

js中的tip提示信息

2011年03月16日 4KB 下载

正则表达式学习

2018年01月15日 28KB 下载

link中调用js方法

2011年07月07日 2KB 下载

MyEclipse中JS自动提示

2018年02月09日 2.72MB 下载

JS中操作word

2011年11月13日 3KB 下载

webview中java与js安全交互

2016年04月08日 218KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭