MozTW 討論區
https://forum.moztw.org/

javascript 有方法呼叫方法的寫法嗎?
https://forum.moztw.org/viewtopic.php?f=13&t=14912
1 頁 (共 1 頁)

發表人:  Mask [ 2006-07-23, 02:29 ]
文章主題 :  javascript 有方法呼叫方法的寫法嗎?

例如:
代碼:
class = {
   method1 : function(){
      // do something
   },
   
   method2 : function(){
      call method1;
      // do something
   }
};


請問有這種寫法嗎?謝謝

發表人:  kourge [ 2006-07-23, 07:53 ]
文章主題 : 

Mask 寫:
例如:
代碼:
class = {
   method1 : function(){
      // do something
   },
   
   method2 : function(){
      call method1;
      // do something
   }
};


請問有這種寫法嗎?謝謝

有。
this.method1();

發表人:  Mask [ 2006-07-23, 16:14 ]
文章主題 : 

kourge 寫:
有。
this.method1();

謝謝,但是 console 指出 method1 不是函式。

可能是我的寫法有問題,附上原檔案以供參考。(大概在第 75 行)

附加檔案:
box.html.txt [3.22 KiB]
被下載 385 次

發表人:  Mask [ 2006-07-23, 17:50 ]
文章主題 : 

有找到呼叫方法了,是用 class.method1();

請問還有更簡潔的方法嗎?我看了不少 library / framework 眼睛都花了 @.@

發表人:  kourge [ 2006-07-25, 12:43 ]
文章主題 : 

啊,我知道為什麼了。
因為你是在 event 發生的時候去呼叫 Class.method1(),所以他的 this 指到的是發出 event 的 element。
這是所謂人稱 "scope" 的問題。

修理的方法如下...
把三個 addEvent 改成下列...

addEvent(objS[i], "mousedown", me.mouseDown.apply(me));
addEvent(objS[i], "mousemove", me.mouseMove.apply(me));
addEvent(objS[i], "mouseup", me.mouseUp.apply(me);

這樣應該可以了。

當你把像這種 Class 樣式的結構套到 event 上常常會出這種問題。

發表人:  訪客 [ 2006-07-26, 17:51 ]
文章主題 : 

太感謝了,幫我釐清了一個觀念

發表人:  Mask [ 2006-07-26, 18:36 ]
文章主題 : 

Anonymous 寫:
太感謝了,幫我釐清了一個觀念


抱歉,在公司沒登入,這是我留的

1 頁 (共 1 頁) 所有顯示的時間為 UTC + 8 小時
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/