- 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(){
......
})();
里边所写的内容就是闭包的范畴了。他算是一个匿名函数而已,在其中定义的变量也属于局部变量
当然了闭包这个东西确实好处还没有摸透,以后熟悉了再补。。。