- function sendMessage(msg,obj){
- if(arguments.length==2)
- obj.handleMsg(msg);
- else
- alert(msg);
- }
- sendMessage("hello,world");
- sendMessage("how are you?",{
- handleMsg:function(msg){
- alert("this is a custom message:"+msg);
- }
- });
可以說是函數的重載吧,arguments可以判斷你傳入參數的個數。然後依次做你判斷,當初我還用到這個功能既然用的是自我判斷的。這個就很方便了
- var t="ddd";
- if(t.constructor==String){
- alert("ok");
- if(typeof t=="string"){
- alert("ok");
- }
- }
判斷對象的類型:除了用typeof 之外還可以用constructor來做判斷,只不過是比較的值不同!
運用構造函數來判斷,最不容易犯錯了。推薦
javascript 中的作用域scope的確很煩人
- var foo="test";
- if(true){
- alert(foo);
- var foo="new test";
- }
- alert(foo);
- function test(){
- alert(foo);
- var foo="old test";
- alert(foo);
- }
- test();
- alert(window.foo);
作用域的理解有的無奈
閉包,這個神奇的東西,還沒發現好處:
暫時勉強有一個了
是代碼清晰:
- function delaydeAlert(msg,time){
- setTimeout(function(){alert(msg);},time);
- }
- delaydeAlert("welcome",2000);
在解決爲了防止多的全局變量時,我們其實已經運用了閉包的思想,比如我們定義的(function(){
......
})();
裏邊所寫的內容就是閉包的範疇了。他算是一個匿名函數而已,在其中定義的變量也屬於局部變量
當然了閉包這個東西確實好處還沒有摸透,以後熟悉了再補。。。