如何在Javascript中設置this
的值?
例如:Javascript - 設置值
var obj = {
a: 'b',
c: "d",
e: function() {
this = {
one: 1,
two: 2
};
}
};
這甚至可能嗎?
如何在Javascript中設置this
的值?
例如:Javascript - 設置值
var obj = {
a: 'b',
c: "d",
e: function() {
this = {
one: 1,
two: 2
};
}
};
這甚至可能嗎?
你不能在JavaScript中明確地指定值爲this
,就像你問的那樣。
一旦函數開始執行,該函數內的this
的值不會改變(儘管嵌入函數可以有其自己的值this
)。
您可以指定屬性this
像這樣或許這就是你想要的:
this.one = 1;
this.two = 2;
相反,this
由函數的調用,什麼怎麼叫的功能是確定控制在函數內部設置了什麼this
。例如:
obj.e()
將設置this
內部的e()
的值設定爲obj
。
您還可以使用.apply()
和.call()
造成的this
的值設置爲比包含的對象以外的東西。
例如做你問什麼,此代碼:
var test = {one:1, two:2};
var obj = { a:'b', c:"d", e:function(){
// this will be set to the test object in here when called as below
}};
obj.e.call(test);
將導致此特定呼叫內的this
價值e()
設置爲您的請求的對象。
var obj = { a:'b', c:"d", e:function(){
// Here, this.one === 1 and this.two === 2
}.bind({ one: 1, two : 2})};
「這個」是不能在函數體內而設定的保留關鍵字。
您可以使用該函數的apply
或call
方法調用具有此特定值的函數。 obj.e.call({one: 1, two: 2})
。查看這兩個函數方法的MDN文章。
每次調用函數時,您還可以使用ECMAScript 5的bind
方法永久設置值this
。這是一種ECMAScript 5方法,因此在舊版瀏覽器中不起作用,但是您可以使用添加對舊版瀏覽器的支持的填充。
這個怎麼樣?
this.one=1;
this.two=2;
如果你在函數內創建'{one:1,two:2}'對象,爲什麼你需要將它分配給'this'?你究竟在努力完成什麼?參見[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) – 2013-02-16 19:41:25