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、递归





案例:



posted @ 2018-04-25 07:39  smartwange  阅读(21)  评论(0)    收藏  举报