1 //1、try catch finally中的return 2 var n=1; 3 function fun(){ 4 try{ 5 n++; 6 m++;//报错 7 return n; 8 }catch(err){ 9 n++; 10 return n; 11 }finally{ 12 n++; 13 //return n; 14 } 15 } 16 console.log(fun());//3 17 console.log(n);//4
/*作用域和作用域链*/ var n=10; function fun(n){ n--; console.log(n); } console.log(fun(n)); //9 console.log(n); //10
1 /*new Function*/ 2 var i=5; 3 function fun(){ 4 var i=4; 5 //var f1=new Function("console.log(i)"); 6 var f1=function(){console.log(i);}; 7 console.log(f1); 8 f1(); 9 } 10 fun();//4
1 /*callback 与 this*/ 2 var o={ 3 n:1, 4 fun:function(){ 5 var self=this;//留住this 6 console.log(self.n++); 7 setTimeout(function(){ 8 self.fun(); 9 },1000); 10 } 11 } 12 o.fun();//this-->o
1 /*DOM中的闭包问题*/ 2 function fun(){ 3 var li=document.getXX...; 4 btn.onclick=function(){ 5 li.xx=xx; 6 }//li将永远无法释放,即使刷新页面也不行 7 }
1 /*引用类型的共有属性*/ 2 function Student(){} 3 Student.prototype.arr=[]; 4 var lilei=new Student(); 5 var hmm=new Student(); 6 lilei.arr.push(1);//this[this.length]=1 7 hmm.arr[1]=2; 8 console.log(lilei.arr);//[1,2] 9 console.log(hmm.arr);//[1,2]
1 /*继承父类型共有方法*/ 2 function Student(){} 3 Student.prototype=[]; 4 var lilei=new Student(); 5 lilei.push(1);//this[this.length]=value; 6 var hmm=new Student(); 7 hmm.push(2); 8 console.log(lilei); 9 console.log(hmm);
1 /*私有属性,公有属性*/ 2 function Student(){ 3 var prop="私有属性";//私有属性 4 this.prop="公有属性"; //公有属性 5 var fun=function(){//私有方法 6 console.log("调用私有方法"); 7 console.log(prop); 8 } 9 this.fun=function(){//公有方法 10 console.log("调用公有方法"); 11 fun();//this-->window 12 console.log(prop); 13 console.log(this.prop); 14 } 15 } 16 var lilei=new Student(); 17 lilei.fun();//公有
1 //阻碍事件 2 for(var i=0;i<3;i++){ 3 setTimeout(function(){ 4 console.log(i); 5 },10) 6 } 7 alert("hello");
1 function MyObj(){ 2 this.p.pid++; 3 } 4 MyObj.prototype.p={"pid":0}; 5 MyObj.prototype.getNum=function(num){ 6 return this.p.pid+num; 7 } 8 var obj1=new MyObj(); 9 var obj2=new MyObj(); //p.pid=2 10 console.log(obj1.getNum(1)+obj2.getNum(2));//7
1 /**/ 2 function fun(n,o){ 3 console.log(o); 4 return {fun:function(m){ 5 return fun(m,n); 6 } 7 } 8 } 9 var a=fun(0);//undefined 10 //a-->{fun:function(m){return fun(m,n)}} 11 a.fun(1); a.fun(2); a.fun(3); //0 0 0 12 var b=fun(0).fun(1).fun(2).fun(3); //0 1 2 13 var c=fun(0).fun(1); c.fun(2);c.fun(3); //0 1 1