如何在 javascript 中引用函数对象的成员?

How to refer to members of a function object in javascript?

我正在尝试做这样的事情:

function foo() { alert(this.bar); }
foo.bar = "Hello world";
foo();

这不起作用,因为我相信 this 指的是全局对象 (window) 而不是 foo。我如何让它发挥作用?

this 引用用于调用方法的对象。默认情况下,它将是 window 对象。

在您的情况下,您应该直接使用命名函数获取函数对象中的参数,因为它在作用域中可用。

function foo() { alert(foo.bar); }
foo.bar = "Hello world";
foo();

你不应该使用 this 来做这样的事情:

foo.call({})

this 将等于空对象。

可能会尝试使用 prototype:

function foo() {
  alert(this.bar);
}
foo.prototype.bar = "Hello world";
new foo(); //new object

推荐选项:

function foo(bar) { //constructor argument
  this.bar = bar;
}
foo.prototype.getBar = function() {
  alert(this.bar);
};
new foo("Hello world").getBar();

我会选择这样做,因为它利用了原型链。

function Foo() { return (this===window) ? new Foo() : this; }
Foo.prototype.hi = function() { alert(this.bar) };
Foo.prototype.bar = "Hi!";

var tmp = new Foo();
tmp.hi();