js—深入原型之四数据类型应用、闭包沙箱 和递归
程序员文章站
2022-05-08 16:51:31
...
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、递归
案例: