js—深入原型之四数据类型应用、闭包沙箱 和递归
1、使用call方法来判断数据类型
 var obj=Object.prototype.toString();
		    console.log(obj);
		var obj1=Object.prototype.toString.call([]);
		console.log(obj1);
		var obj2=Object.prototype.toString.call('');
		console.log(obj2);
              console.log(typeof obj2);返回:是字符串类型
[object Object]
call.html:14 [object Array]
call.html:16 [object String]
string
2、进一步判断类型
   function ff (type) {
         return function(obj){
             return Object.prototype.toString.call(obj)===type;
         }
     }
     var ty=ff('[object Array]');
     var bol=ty([12,32,14,35]);
     console.log(bol); //true
     
     var ty=ff('[object String]');
     var bol=ty('sdsd,sdsd');
     console.log(bol);    //true
     
     var ty=ff('[object Number]');
     var bol=ty(213123213);
     console.log(bol);    //true                             
3、//按不同条件实现排序
 function File (name,size,time) {
     this.name=name;
     this.size=size;
     this.time=time;
 }
 var file1=new File('xiaojie','200mb','2018');
 var file2=new File('cainiao','400mb','2011');
 var file3=new File('fukua','800mb','2001');
 var arr=[file1,file2,file3];
 function sortFile (attr) {
     return function(obj1,obj2){
         if (obj1[attr]>obj2[attr]) {
             return 1;
         } else if (obj1[attr]==obj2[attr]) {
             return 0;
         } else{
             return -1;
         }
     }
 }
 var ff=sortFile('size');
 arr.sort(ff);
 for (var i=0;i<arr.length;i++) {
     console.log(arr[i].name+"----------"+arr[i].size+"-----------"+arr[i].time);
 } 
4、闭包:两种形式
测试:闭包缓存数据:
返回都是11                                 ff接受的是f1函数的返回值,是有缓存的所以在上一次基础上加1
闭包点赞:
5、沙箱:
6、递归
案例:
 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号