我正在尝试这样的事情:
(function() {
var Foo, foo;
Foo = function(proto) {
var obj, privateMethod, publicMethod;
privateMethod = function() {
return console.log("private", this);
};
publicMethod = function() {
console.log("public", this);
return privateMethod();
};
obj = Object.create(proto);
obj.bar = publicMethod;
return obj;
};
foo = new Foo({
baz: "dooz"
});
foo.bar();
}).call(this);
显然 this 是调用 publicMethod 时的对象本身,但在 privateMethod 中设置为全局对象。我知道它可以通过改变来解决:
return privateMethod();
至:
return privateMethod.call(this);
我知道当一个函数嵌套在一个函数中时,这个 get 会丢失,但没想到这里会出现这种情况。我是否在这里遇到了这个 JavaScript 错误,或者有什么我根本不明白的地方?