如果我在javascript中执行此操作
var A = function() {
alert(this.foo);
};
A["foo"] = "bar";
A();
我希望提醒bar
,但我未定义,是否有人知道如何使这项工作?
由于
答案 0 :(得分:1)
this
的值是调用该方法的对象(除非您使用new
运算符或类似call
或bind
)。由于您没有将该函数作为方法调用,因此它是默认对象(浏览器中为window
),除非您处于严格模式。
您对范围内功能的唯一引用是A
,因此您只能通过alert(A.foo)
访问它。
如果您使用了命名函数表达式:
var A = function myFunction () {
然后你可以将变量myFunction
本地作用于该函数,而不是A
。
答案 1 :(得分:1)
this
指的是"父母"函数的对象,而不是函数本身。表达式A()
中没有父级。为了实现这一目标,您必须明确地将A
作为this
值传递:
A.call(A);
它通常意味着工作的方式是:
var A = {
alert: function () {
alert(this.foo);
}
};
A.foo = 'bar';
A.alert();
A
中的A.alert()
用作this
内的alert()
值。
答案 2 :(得分:0)
var A = function() {
};
A.prototype.alert = function () {
alert(this.foo);
}
var a = new A();
a["foo"] = "bar";
a.alert();
或
var img = new Image();
img.onload = function() {
stage.update();
}
img.src = "creep.png";
var creepTex = new createjs.Bitmap(img);