一、立即执行函数表达式IIFE—(immediately-involked function expression)

代码示例如下:

 (function(){
    var a=b=5;
 })();
 console.log(b); // 5 因为a使用关键字var定义,故其为局部变量,但b为全局变量;

 (function(){
    'use strict'
    var a=b=5;------>更改为var a=window.b=5;// 则正常
 })();
 console.log(b); //若使用严格模式'use strict';会报错uncaught referenceError:b is not defined;

二、创建原生Naive方法

  • 扩展原生数据类型;

例如创建一个str.repeatStr()函数;满足console.log(‘s’.repeatStr(5));// sssss

 String.prototype.repeatStr=String.prototype.repeatStr||function(times){
    // String.prototype.repeatStr避免重写已定义的方法;
    var str='';
    for(var i=0;i<times;i++){
        str+=this;
    }
    return str;
 }

三、this如何工作—-所引用的是函数上下文,取决于函数是如何调用的,而不是被定义的;

代码示例:

 var fullname='AAA';
 var obj={
    fullname:'BBB';
    prop:{
          fullname:"CCC"
          getFullname:function(){
              return this.fullname;
           }
    }
 }
 console.log(obj.prop.getFullname()); // CCC  ---getFullname作为obj.prop对象的函数被调用,this指obj.prop;
 var test=obj.prop.getFullname();
 console.log(test()); // AAA; ---- 当前上下文是window;

 如何让最后一个console打印出CCC;
 call()、apply()----强制转换上下文环境;
 console.log(test.call(ovj.prop)); // CCC

call/apply都能继承另一个对象的方法和属性;

 Function.apply(obj,args);
    obj--这个对象将替代Function类型里的this对象;
    args--数组,将作为参数传递给Function(args-->arguments)
 Function.call(obj,arg1,arg2...);
 区别仅有一个:
 apply第二个参数是参数数组、call是参数列表

四、isPrime判断;

写一个判断是否为质数的判断函数,是质数返回true,否则返回false;

 Function isPrime(number){
    if(typeOf number!=='number'||!Number.isInteger(number)){
        // 输入检查
        return false;
    }
    if(number<2){ // 负数不是质数
        return false;
    }
    if(number===2){
        return true;
    }else if(number%2===0){
        return false; // 大于2的能被整出的偶数都不是质数
    }
    var squartRoot=Math.sqrt(number);
    for(var i=3;i<squartRoot;i+=2){
        // i+=2---是因为偶数已被排除;
        if(number%i===0){
            return false;
        }
    }
    return true;
 }

五、数组与对象的遍历;

  • for of 不考虑构造函数的不可枚举属性,至查找可枚举属性;—相比for in 可循环更多东西;

  • for in 用来循环带有字符串key的对象的方法;需要进行hasOwnproperty判断;

  • for of 在es6中代替for in—可用于遍历数组、字符串、映射、集合等;

    • 遍历数组前需要判断数组是否为空;

示例代码:

  function (var item of array){
    // statement;
    // item:每个迭代的属性值被分配到改变量;
    // array:一个具有可每句属性并可被迭代的对象;
 }
  • for in —遍历对象的所有可枚举属性;

示例代码:

 for(var t in obj){
     // t为key---index
 }

六、angular-seed学习

  • 第三方库html-boilerplate—>多浏览器兼容(css reset、IE版本、移动端)

  • meta— IE8专用的meta标记—用于指定IE8使用哪种模式(IE6/IE7)来渲染浏览器,IE=edge说明什么版本的IE就使用什么版本的模式;

示例代码:

  <meta http-equiv="X-UA-Compatiable" content="IE='edge'">
  • Modernizr:js库,检查浏览器对css3或html5的功能支持情况;
  • Karma是一套前端测试运行环境;
  • Jasmine是js的测试框架;
    • describe表示一组测试用例的集合;
    • it表示具体的测试用例;
    • expect表示期望结果;

七、前端小点

  • 打印将Object作为Table输出,console.log(object);

  • 带promise的异步ajax请求后台数据

示例代码:

 function requestData(param){
    var deferred=$q.defer();
    var promise =deferred.promise;
    $.ajax({
        url:param.url,
        data:JSON.stringfy({
                 cmd:param.cmd,
                 body:param.body,
            }),
        contentType:"application/json;charset=utf-8",
        dataType:"json",
        success:function(result){
            promise.resolve(result);
        },
        error:function(){
            promise.reject();
        }
       });
    return promise;
 }
  • QRCode.js—用于生成二维码;

示例代码:

 html:
 <script src="qrcode.js">
    <div id=qrcodeId></div>
 </script>

 js:
 var q=new QRCode('qrcodeId');
 q.clear(); 
 q.makeCode('ccccccc'); // cccccc为二维码内容;
  • html中【中文乱码】问题

    • 浏览器上设置编码方式UTF-8;
    • 在html的最前边加编码设置;

方式二代码

 <html>
 <meta charset="utf-8">
 </html>
  • span之间有空格写法:

示例代码:

 <span>第一行</span>
 <span>第二行</span>   -----两个span之间回车即可实现
  • background-attachment:设置背景图像是否会随着页面其余部分滚动而滚动;

  • 浏览器内核

chrome IE firefox safari opera
-webkit- -ms- -moz- -webkit- -webkit-
  • 时间过滤器

示例代码:

 dataValue|date:"yyyy/MM/dd HH:mm:ss"
  • github如何在本地创建仓库,并推动至github服务器;

示例代码:

  【1】文件夹下:git init
  【2】增加文件:git status  ---查看增删文件情况
  【3】确定添加哪些文件:git add "-A"  ---A代表全部提交
  【4】提交文件到本地仓库:git commit -m '提交说明'
  【5】在github创建仓库
  【6】本地仓库与远程建立联系: git remote add origin gitName/仓库名.git
  【7】推动至远程仓库:git push -u origin master
  • css判断屏幕大小

示例代码:

 @media screen and (min-width:480px) and (max-width:799px){
    // css code
 }