如果我這樣做是在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();' –