最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js當一個變量為函數(shù)時 應該注意的一點細節(jié)小結

 更新時間:2011年12月29日 00:44:47   作者:  
變量testFun為一個匿名函數(shù),匿名函數(shù)返回的一個testFun.init對象(也是一個匿名函數(shù))
先看一段簡單的代碼:
復制代碼 代碼如下:

var testFun=function (name,age){
var job='Flash Develop';
return new testFun.init(name,age,job);
}
testFun.init=function(name,age,job){
return 'name:'+name+',age:'+age+',job:'+job+'';
}
alert(testFun('vincent',30)); //[object Object]

代碼很簡單,變量testFun為一個匿名函數(shù),匿名函數(shù)返回的一個testFun.init對象(也是一個匿名函數(shù))。但對于一些新手有時會誤解為:testFun是返回的一個testFun.init對象。他可能會這樣想,在匿名函數(shù)function(name,age)構建過程中,又用到了testFun. 此時testFun還在構建中,應該還沒有存在,testFun.init更沒有存在,怎么就可以用testFun.init呢?

其實這樣想是存在了一個誤區(qū):把testFun與testFun()等同起來了,如果testFun是返回的一個testFun.init對象,代碼應該是testFun=function(name,age){… …}()。正確的理解應該是這樣的,testFun只是一個函數(shù),當你把一個函數(shù)賦于它時,它就已經(jīng)存在了,哪怕函數(shù)返回的是undefined或null,它本身仍然是Function,只有testFun()執(zhí)行后返回值才是undefined或null。返回值是testFun()執(zhí)行的結果,結果返回后,就不再與testFun有任何關系。如:
復制代碼 代碼如下:

var testFun=function(){
return undefined;
}
var result=testFun();
alert(testFun); // function () {return undefined;}
alert(result); // undefined result與testFun不再有任何關系

所以,當賦于testFun一個匿名函數(shù)后,它就一直存在著,直到賦于它另外一個值。對于testFun.init你可以這樣簡單的去理解:
testFun.init=function(name,age){}.init=function(name,age.job){… …}
綜上所述,回頭再看testFun是一個函數(shù),而testFun()則是(function(name,age,job){return 'name:'+name+',age:'+age+',job:'+job+''; })()
為了便于理解,可以把代碼精簡為:
復制代碼 代碼如下:

var testFun=function(){}
testFun.init=function(){}

只是testFun()沒有返回一個testFun.init對象罷了。

相關文章

最新評論

乳源| 伊春市| 会东县| 乐平市| 清水县| 遂溪县| 凉山| 玉田县| 南乐县| 巴青县| 华阴市| 三明市| 内黄县| 开化县| 桐柏县| 缙云县| 贵阳市| 罗江县| 南雄市| 桓台县| 武清区| 肃宁县| 丘北县| 太和县| 三江| 黔江区| 长岭县| 甘孜| 商河县| 望江县| 柞水县| 建瓯市| 西吉县| 昆山市| 湛江市| 手游| 贺州市| 嘉义市| 靖江市| 林州市| 洪雅县|