Re: [問題] Javascript object 的問題

看板Ajax作者 (SLY)時間17年前 (2007/12/26 22:19), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《xamous (一天死去一點)》之銘言: : ※ 引述《xamous (一天死去一點)》之銘言: : : 我有一個自訂物件,會透過 Ajax 來 update 內部的一些值,我把問題簡化如下: : : MyObject = function(initVal) { : : this.val = initVal; : : } : : //a method : : MyObject.prototype.load = function(url) { var temp = this; : : //使用 prototype.js 的 Ajax.Request 物件 : : new Ajax.Request( : : url, { : : method: 'get', : : onSucccess: function(t) { : : this.val = t.responseText; // <- problem here!! temp.val = t.responseText; 其實思路和你找到的方法一樣。。 : : } : : }); : : } : : //use : : var myObj = MyObject.new('0'); //init with '0' : : myObj.load('http://some-url/response_text_is_1'); : : alert(myObj.val); //期望是 '1',但還是初始值 '0' : : 問題就是 this.val = t.responseText; 這一行,因為這是在一個 callback : : function 裡,所以 this.val 存取到的是這個 function 內部的變數,而不 : : 是 MyObject 裡的 MyObject.val 這個變數,即使執行 MyObject.load() : : 也更新不到它的成員變數(js 有這個術語嗎@@?) : : 請問有什麼方法可以存取到這個成員變數嗎?謝謝 m(_ _)m : 自問自答 : Ajax.Request 的第二個參數是一個 hash,可以自己塞東西進去: : new Ajax.Request( : url, { : object: this, //把 this 丟給它 : method: 'get', : onSuccess: function(t) { : object.val = t.responseText; //透過object存取上層物件 : } : }); : 靈感來自:http://0rz.tw/883qE : 只是不知道這個作法是不是奇技淫巧 XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 58.207.128.202
文章代碼(AID): #17ScBT_l (Ajax)
文章代碼(AID): #17ScBT_l (Ajax)