学习时间 完成时间 ✅ 重难点 疑问/遗漏
复习时间

封装typeof方法

  1. typeof数据类型判断会返回的值:number string boolean object function undefined
  2. 且结果都是字符串类型
  3. function myTypeof(val){
  4. var type=typeof(val);
  5. var toStr=Object.prototype.toString;
  6. var res={
  7. '[object Array]':'array',
  8. '[object Object]': 'object',
  9. '[object Number]': 'object number',
  10. '[object String]':'object string',
  11. '[object Boolean]': 'object boolean'
  12. }
  13. if(val===null){
  14. return 'null';
  15. }else if(type==='object'){
  16. var ret=toStr.call(val);
  17. return res[ret]
  18. }else{
  19. return type;
  20. }
  21. }

数组去重

  1. 解析:因为对于对象不可能存在两个相同完全相同的属性
  2. 借用key值不会重复,给数组去重
  3. {
  4. name:'ckl',
  5. name:';;;' //此情景不会存在两个相同的属性
  6. }
  7. var arr=[1,4,2,14,2,1,2]
  8. Array.prototype.unique=function(){
  9. var temp={};
  10. newArr=[];
  11. for(var i=0;i<this.length;i++){
  12. if(!temp[this[i]]){ //此处temp[0]=0是个特殊的值
  13. // temp[this[i]]=this[i];
  14. temp[this[i]]='value'; //这个值要为非0的值
  15. newArr.push(this[i])
  16. }
  17. //或者 判断的方式二
  18. // if(!temp.hasOwnProperty(this[i])){
  19. // temp[this[i]]=this[i];
  20. // newArr.push(this[i])
  21. // }
  22. }
  23. return newArr;
  24. }
  25. console.log(arr.unique())
  26. 知识补充
  27. var obj={
  28. name:'123'
  29. }
  30. console.log(obj.hasOwnProperty('name')) //true
  31. console.log(obj.hasOwnProperty('kk')) //false obj没有kk属性

字符串的去重

  1. var str='112314357392848'
  2. String.prototype.unique=function(){
  3. var temp={};
  4. var newStr='';
  5. for(var i=0;i<this.length;i++){
  6. if(!temp.hasOwnProperty(this[i])){
  7. temp[this[i]]=this[i];
  8. newStr+=this[i]
  9. }
  10. }
  11. return newStr;
  12. }
  13. console.log(str.unique())

字符串中第一个非重复字符

  1. var str='avbgsasdsanssj';
  2. function test(str){
  3. var temp={};
  4. for(var i=0;i<str.length;i++){
  5. if(temp.hasOwnProperty(str[i])){
  6. temp[str[i]]++;
  7. }else{
  8. temp[str[i]]=1;
  9. }
  10. }
  11. for(var key in temp){
  12. if(temp[key]===1){
  13. return key;
  14. }
  15. }
  16. }
  17. console.log(test(str))

闭包练习

  1. function Test(a,b,c){
  2. var d=0;
  3. this.a=a;
  4. this.b=b;
  5. this.c=c;
  6. function e(){
  7. d++;
  8. console.log(d);
  9. }
  10. this.f=e;
  11. }
  12. var test1=new Test();
  13. test1.f();//1
  14. test1.f();//2
  15. var test2=new Test();
  16. test2.f();//1

练习题

  1. 第一题
  2. function test(){
  3. console.log(typeof(arguments)); //object
  4. }
  5. test()
  6. 第二题
  7. var test=function a(){
  8. return 'a';
  9. }
  10. console.log(typeof(a))//undefined 因为函数表达式忽略函数名字 a正常情况下无需定义
  11. console.log(a) //报错 因为a未定义