Re: [問題] Javascript object 的問題

看板Ajax作者 (一天死去一點)時間16年前 (2007/12/26 21:42), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
※ 引述《xamous (一天死去一點)》之銘言: : 我有一個自訂物件,會透過 Ajax 來 update 內部的一些值,我把問題簡化如下: : MyObject = function(initVal) { : this.val = initVal; : } : //a method : MyObject.prototype.load = function(url) { : //使用 prototype.js 的 Ajax.Request 物件 : new Ajax.Request( : url, { : method: 'get', : onSucccess: function(t) { : this.val = t.responseText; // <- problem here!! : } : }); : } : //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 -- 雁子回到了遙遠的北方 妳的名字我已想不起來 別怪我 生命太匆忙 http://blog.xamous.net -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.175.81.213 ※ 編輯: xamous 來自: 218.175.81.213 (12/26 21:46)
文章代碼(AID): #17SbfLX_ (Ajax)
文章代碼(AID): #17SbfLX_ (Ajax)