这两个this如何理解 var obj1 = { func:function(){ this.func(); obj1.func(); } }var obj2 = { func:function(){ this.func(); obj1.func(); } }这样写 你能看出区别了把 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 obj的值是固定的,但this的值是不固定的。this的值总是指向函数(方法)所在的对象比如var aaa = {fa: obj.fun};同一个函数(方法),其中的this指向和就是aaa对象了 首先,this 是运行时确定的,就是说,运行时,这个 fun 函数作为哪个对象的方法执行,_this.fun() 就调用该对象的 fun()方法(就是不断的自己调用自己,这会造成死循环),这个运行时对象是不确定的。obj.fun() 是指调用 obj 对象上的 fun() 方法,这里的 fun() 作为 obj 对象的方法调用,是确定的。举个栗子,var obj = { 'st': function() {}, 'tt': {}, 'name': 'jjj', 'fun': function () { var _this = this; _this.fun(); obj.fun(); } };var obj2 = obj;obj = { 'fun': function () { alert("我是修改后的 obj 对象的 fun 方法"); } }obj2.fun();这段代码里,最后一条调用语句, obj2.fun(); 执行后,该函数里面的两个对象方法调用中,_this.fun() 和 obj.fun() 调用的 fun 方法是不一样的,_this.fun() 指的是 obj2.fun() ,即这个函数会一直自己调用自己,造成死循环。而 obj.fun() 的执行 会 alert,不过由于上一条语句的原因,该函数永远也不会执行。 jquery.ajax 返回值为空,这是什么情况 怎样把这jquery的语句翻译成js的? 如何在javascript中异步调用一个函数 js里如何将字符类型转化为数值类型 【讨论】如何通过正则表达式"限制"复杂输入<不是验证输入> 请问在网页中,如何判断windows media player播放结束? 文本框只能输入0-9和a-f 有没有比我高点的高手在? 请教怎样定位以XML文件中的指定元素? 关于ie版本对全屏窗口控制支持的问题 求教,帮看下这个JS控制FLASH播放的域名问题 Ext.grid.EditorGridPanel 表格自适应高度问题。
var aaa = {fa: obj.fun};
同一个函数(方法),其中的this指向和就是aaa对象了
obj.fun() 是指调用 obj 对象上的 fun() 方法,这里的 fun() 作为 obj 对象的方法调用,是确定的。
举个栗子,var obj = {
'st': function() {},
'tt': {},
'name': 'jjj',
'fun': function () {
var _this = this;
_this.fun();
obj.fun();
}
};var obj2 = obj;
obj = {
'fun': function () {
alert("我是修改后的 obj 对象的 fun 方法");
}
}
obj2.fun();
这段代码里,最后一条调用语句, obj2.fun(); 执行后,该函数里面的两个对象方法调用中,
_this.fun() 和 obj.fun() 调用的 fun 方法是不一样的,
_this.fun() 指的是 obj2.fun() ,即这个函数会一直自己调用自己,造成死循环。
而 obj.fun() 的执行 会 alert,不过由于上一条语句的原因,该函数永远也不会执行。