作者TKirby ( ^-^)
看板Web_Design
標題Re: [問題] JavaScript 指定 function問題..
時間Fri Jan 20 22:12:06 2006
不太清楚你的問題
函式中可以呼叫其它函式 遞迴也是可以的
函式本身也是物件, 所以可以用 new Function("..code..") 的方式宣告
甚至也可以在函式中宣告函式
比方說
function FEMC() {
function AKD() {
/* ..blah.. */
}
AKD();
}
(function FEMC() {...} 可以想成是 var FEMC = new Function("...");)
這時候函式的 scope 就很有趣了
詳情請參考 Programming Language 的教科書
要有良好的概念,就要知道 function 跟 object, array 一樣
都是一個物件
function 變數可以以後面加括號的方式來執行
所以說,你也可以弄 function 陣列:
var fa = new Array(new Function("alert('1');"),new Function("alert('2');"),..);
然後 fa[0](); fa[1](); 來執行
也可以寫串接 function :
function flist(next,func) {
var that = this;
function rfunc() { that.func(); if(next) that.next.run(); }
this.next = next; this.func = func; this.run=rfunc;
}
然後
head = new flist(new flist(new flist(null,blah1),blah2),blah3);
head();
也可以動態產生 function:
var userinput = document.getElementById("input").value;
userfunction = new Function(userinput);
再配合 eval 跟 setTimeout 就更邪惡了
因此在 javascript 中所謂的成員函式(或方法) 也就只是另一個成員變數罷了
※ 引述《milen (OOXX點點點)》之銘言:
: 今天才在看java script
: 所以跑來翻舊文= ="
: 請問一下....
: 函數之中不可再呼叫其他函式嗎?@@"
: 但卻又可以跑遞迴?
: 書中對類似函式的需求是去設定方法(method)就是了@@"
: ※ 引述《TKirby ( ^-^)》之銘言:
: : 你可以參考一下2128篇, "R: [問題] 請教一個javascript語法"
: : onchange = OnChangeBrand(..); 代表把 onchange 設成函式執行後的值
: : 而不是把 OnChangeBrand 設成 onchange 會去執行的函式
: : 這樣寫就沒問題了 :
: : obj1.onchange=function (obj1, a) {
: : ...
: : }
: : 可以再稍微包裝一下讓這個函式可以重複利用
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.30.52
1F:推 milen:fa陣列對現在的我來說已經邪惡到極點了@@"其他領悟中>"< 01/20 22:50
2F:推 PsMonkey:這篇可以借轉嗎? 01/20 23:12
3F:→ TKirby:可以 :p 01/20 23:14