/*****************函数名****************/<br /> <br /> //yell呼喊<br /> //实现函数自己调用自己<br /> <br /> function yell(n){ <br /> return n > 0 ? yell(n-1) + "a" : "hiy"; <br /> }<br /> <br /> alert(yell(4))<br /> <br /> //忍者<br /> //可以将函数赋给一个变量,在该函数中ninja==myNinja,在函数外无法访问myNinja,<br /> var ninja = function myNinja(){ <br /> assert( ninja == myNinja, "This function is named two things - at once!" ); <br /> }; <br /> ninja(); <br /> assert( typeof myNinja == "undefined", "But myNinja isn't defined outside of the function." ); <br /> <br /> //可以将一个匿名函数做为一个对象的属性<br /> var ninja = { <br /> yell: function(n){ <br /> return n > 0 ? ninja.yell(n-1) + "a" : "hiy"; <br /> } <br /> }; <br /> assert( ninja.yell(4) == "hiyaaaa", "A single object isn't too bad, either." );<br /> <br /> //可以将一个对象的属性继承给另一个对象。<br /> <br /> var ninja = { <br /> yell: function(n){ <br /> return n > 0 ? ninja.yell(n-1) + "a" : "hiy"; <br /> } <br /> }; <br /> assert( ninja.yell(4) == "hiyaaaa", "A single object isn't too bad, either." ); <br /> <br /> var samurai = { yell: ninja.yell }; <br /> var ninja = null; //如果原始对象为空,则不能发生继承<br /> <br /> try { <br /> samurai.yell(4); <br /> } catch(e){ <br /> assert( false, "Uh, this isn't good! Where'd ninja.yell go?" ); <br /> }<br /> <br /> <br /> //同上例(纠错)<br /> <br /> var ninja = { <br /> yell: function yell(n){ <br /> return n > 0 ? yell(n-1) + "a" : "hiy"; <br /> } <br /> }; <br /> assert( ninja.yell(4) == "hiyaaaa", "Works as we would expect it to!" ); <br /> <br /> var samurai = { yell: ninja.yell }; <br /> var ninja = {}; <br /> assert( samurai.yell(4) == "hiyaaaa", "The method correctly calls itself." );<br /> <br /> //如果没有给函数指定名称,则arguments.callee就是它自己<br /> <br /> var ninja = { <br /> yell: function(n){ <br /> return n > 0 ? arguments.callee(n-1) + "a" : "hiy"; <br /> } <br /> }; <br /> assert( ninja.yell(4) == "hiyaaaa", "arguments.callee is the function itself." );//yell呼喊 //实现函数自己调用自己 function yell(n){ return n > 0 ? yell(n-1) + "a" : "hiy"; } alert(yell(4))