奇怪的this指向,高手请进 var a={ b:function(){ alert(this.c); }, c:1,}(a.b=a.b)()各位 麻烦解释一下为什么会输出undfined this=window? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ???this指向的就应该是a才是呀(a.b=a.b)()??这是啥米用法。木有见过:a.b()吧?再一个c:1,后面的逗号也不应该加 你要弄懂js中js是根据啥来判断的this是根据作用域来的 那么 你上面代码中的this则他的作用于为b这个对象里面 然后你alert(this.c)而你的c的作用域为a 当然是undfined var a={ b:function(){ alert(this.c); }, c:1,}a.b();//this指向a.cvar c=100;window.setTimeout(a.b,1000);//指向window.c(a.b=a.b)()你的那个用法没见过啊 var a={ b:function(){ alert(this.c); }, c:1,}(a.b=a.b)()//this指向当前window对象。关键在于最后一个语句,先执行=号表达式,即赋值表达式,该表达式是能得到一个值的,通俗地可以理解为赋值语句有返回值,所以有var a=b=c=……这种语句,那么代码中的例子最后一行语句可以拆分为://(a.b=a.b)()var tmp=a.b;a.b=tmp;tmp();执行时只是执行单纯的一个函数,而与函数所属对象无关,所以函数中的this指向了当前的window对象,不再像调用对象的方法一样。 js或js的第三方库有没有能监听dom元素的隐藏或显示的事件? fckeditor 文本编辑器多了一个框 怎么感觉delete this.newMethod;加不加无所谓? ★javascrpt如何判断点击IE的“后退”,“前进”等按钮的事件发生? HTML页面中JS调用一个JSP程序出错,调用ASP就没问题,这是怎么会事? 怎么样屏蔽掉Ctrl+P 键 操作XML字串(在线) 我需要走马灯广告的程序源代码,谁能帮我写写。 关掉一个页面,然后自动刷新另一个页面,有没有办法实现? jQuery怎么取value属性的值?好像val和prop都不行? google的JSAPI小问题 弹出窗口
this是根据作用域来的 那么 你上面代码中的this则他的作用于为b这个对象里面 然后你alert(this.c)而你的c的作用域为a 当然是undfined
b:function(){
alert(this.c);
},
c:1,
}
a.b();//this指向a.c
var c=100;
window.setTimeout(a.b,1000);//指向window.c
(a.b=a.b)()
你的那个用法没见过啊
var a={
b:function(){
alert(this.c);
},
c:1,
}
(a.b=a.b)()//this指向当前window对象。关键在于最后一个语句,先执行=号表达式,即赋值表达式,该表达式是能得到一个值的,通俗地可以理解为赋值语句有返回值,所以有var a=b=c=……这种语句,那么代码中的例子最后一行语句可以拆分为://(a.b=a.b)()
var tmp=a.b;
a.b=tmp;
tmp();执行时只是执行单纯的一个函数,而与函数所属对象无关,所以函数中的this指向了当前的window对象,不再像调用对象的方法一样。