我在玩 new、this 和 JavaScript,我遇到了一些东西,我不知道为什么 JavaScript 会这样。任何帮助我解决这个问题都会很棒。
可以说我有一个功能:
function X() {
this.q = function() {
console.log(this);
};
console.log(this);
}
这按我的预期工作:
var x = new X();
=> X {q: function}
x.q();
=> X {q: function}
但这并不像我期望的那样:
function func(f) {
f();
}
var x = new X();
=> X {q: function}
func(x.q);
=> Window {top: Window, window: Window, location: Location, external: Object, chrome: Object…}
// I expected this to return "X {q: function}"
// But this works...
func(function() {x.q()});
=> X {q: function}
我似乎对 javascript 有一些误解,因为它在这种情况下的行为方式与我期望的方式完全不同。