如何在 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();
我正在尝试做这样的事情:
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();