Re: [問題] Javascript object 的問題
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章