如果我这样做是在JavaScript如何从javascript函数中读取值?
var A = function() {
alert(this.foo);
};
A["foo"] = "bar";
A();
我希望提醒bar
,但我得到了一个未定义,没有人知道我怎样才能使这项工作?
感谢
如果我这样做是在JavaScript如何从javascript函数中读取值?
var A = function() {
alert(this.foo);
};
A["foo"] = "bar";
A();
我希望提醒bar
,但我得到了一个未定义,没有人知道我怎样才能使这项工作?
感谢
的this
值是在该方法被调用(除非你使用的new
运营商或东西像call
或bind
)的对象。由于您没有将该函数作为方法调用,因此它是默认对象(在浏览器中为window
),除非您处于严格模式。
对范围内的功能的唯一参考是A
,因此您只能通过alert(A.foo)
访问它。
如果你用了一个名为函数表达式:
var A = function myFunction() {
,那么你将不得不可变myFunction
局部范围到功能,你可以使用,而不是A
。
var A = function() {
alert(this.foo);
};
A["foo"] = "bar";
A.call(A);
或
var A = function() {
};
A.prototype.alert = function() {
alert(this.foo);
}
var a = new A();
a["foo"] = "bar";
a.alert();
this
指功能的 “父” 对象,而不是函数本身。表达式A()
中没有父母。为了“使这项工作”,你必须明确地传递A
作为this
值:
A.call(A);
它通常的方式意味着工作是这样的:
var A = {
alert: function() {
alert(this.foo);
}
};
A.foo = 'bar';
A.alert();
的A
从A.alert()
在alert()
内被用作this
的值。
'var A = function(){ alert(this.foo); }; A.prototype.foo =“bar”; var x = new A();' –