- 主题:该如何理解this?
jquery cookbook 85到88页很好地解释了你的问题
--
FROM 120.204.200.*
参见 JavaScript the good part
函数调用 那章节。
【 在 wuhaochi (oo) 的大作中提到: 】
: 把一个对象的成员函数放进了setInterval()里,结果this在第一次执行时是原对象,
后来就变成 当前url对象了……
: 飘忽不定啊!
: 当时书上说,函数前面的的对象就是this,我觉得这就好理解了,想起以前看过的那本
书,讲这个this讲得我晕头转向,根本没懂,索性不用。这次以为懂了,大用特用,结果
MD,它还能变……还是在运行时动态绑定的,什么成员函数,跟普通函数没任何区别。
--
FROM 183.4.93.*
1. this 是函数的调用者(可以认为是 . 前的对象)
2. 当没有调用者时,this 是 window
3. 函数的 this 可以被 .bind, .call, .apply 方法影响
例如
var foo = {
bar: function () {
console.log(this);
}
};
根据 (1),foo.bar() 这样调用 this 指向 foo
根据 (2), var bar = foo.bar(); bar(); 这样调用 this 指向 window
根据 (3), 以下例子中的 this 指向 foo:
var bar = foo.bar.bind(foo); bar();
var bar = foo.bar; bar.call(foo);
var bar = foo.bar; bar.apply(foo);
根据 (3),以下例子中得 this 指向 window:
foo.bar.call(window);
foo.bar.apply(null);
foo.bar.bind(null)();
最后出一题: [foo.bar][0](); 中的 this 是谁
【 在 wuhaochi (oo) 的大作中提到: 】
: 把一个对象的成员函数放进了setInterval()里,结果this在第一次执行时是原对象,后来就变成 当前url对象了……
: 飘忽不定啊!
: 当时书上说,函数前面的的对象就是this,我觉得这就好理解了,想起以前看过的那本书,讲这个this讲得我晕头转向,根本没懂,索性不用。这次以为懂了,大用特用,结果MD,它还能变……还是在运行时动态绑定的,什么成员函数,跟普通函数没任何区别。
: ...................
--
修改:PerfectWorks FROM 123.125.174.*
FROM 123.125.174.*
很好。测了一下答案是[0]前面的[foo.bar]。
另,
"根据 (2), var bar = foo.bar(); "中 "bar()"应为“bar”吧?
【 在 PerfectWorks (晓来雨过 遗踪何在 一池萍碎) 的大作中提到: 】
: 1. this 是函数的调用者(可以认为是 . 前的对象)
: 2. 当没有调用者时,this 是 window
: 3. 函数的 this 可以被 .bind, .call, .apply 方法影响
: ...................
--
FROM 59.175.226.*