javaScript的再次学习

#先前有学习过javaScript,现在项目有需求,在重写复习一边,下面是整理的一些js的知识点

Cookie

1> 部分函数

方法名参数列表内容返回值注意
window.document.cookie无参获取所有的cookie以字符串的形式获取到的所有cookie。格式:“name1:value1; name2:value2”,分割的中间有空格
window.document.cookie.indexOfstring,int从int指定的位置开始往后查找string的位置查找到的字符的坐标,如果没有找到则返回-1
document.cookie.indexString str查找string出现的位置查找到的字符的坐标,如果没有找到则返回-1如果是查找CookieName,则需要加上“=”进行查找,否则可能会查找到value值里面的坐标
document.cookie.substringstart_int,end_int从指定的开始坐标向后截取到结束坐标截取到的字符串
escapeString str编码除字母、数字和ASCII编码的字符编码后的字符串它能将一些特殊符号使用十六进制表示,例如空格将会编码为“20%”,从而可以存储于cookie值中,而且使用此 种方案还可以避免中文乱码的出现。使用unescape解码
window.location.hrefString url在当前页面打开一个urlnew pagewindow.location.href=window.location.href;等同刷新;“window.location.href”、"location.href"是本页面跳转;"parent.location.href"是上一层页面跳转;"top.location.href"是最外层的页面跳转

2> 添加cookie
    function addCookie(objName, objValue, objHours){//添加cookie 
            var str = objName + "=" + escape(objValue); 
            if (objHours > 0) {//为0时不设定过期时间,浏览器关闭时cookie自动消失 
                var date = new Date(); 
                var ms = objHours * 3600 * 1000; 
                date.setTime(date.getTime() + ms); 
                str += "; expires=" + date.toGMTString(); 
            } 
            document.cookie = str; 
            alert("添加cookie成功"); 
        } 

3> 通过cookie的名字获取cookie的值

       function getCookie(objName){//获取指定名称的cookie的值 
            var arrStr = document.cookie.split("; "); 
            for (var i = 0; i < arrStr.length; i++) { 
                var temp = arrStr[i].split("="); 
                if (temp[0] == objName) 
                    return unescape(temp[1]); 
            } 
        } 

4> 通过cookie的名字删除cookie

        function delCookie(name){//为了删除指定名称的cookie,可以将其过期时间设定为一个过去的时间 
            var date = new Date(); 
            date.setTime(date.getTime() - 10000); 
            document.cookie = name + "=a; expires=" + date.toGMTString(); 
        } 

***

js

1> 运行期上下文

js的function在创建时会创建一个内部对象,被称作“运行期上下文”。一个“运行期上下文”定义了一个函数运行时依赖的环境。
对函数的每次运行而言,每个运行期上下文都是独一无二的,所以当一个函数被重复调用时,会反复创建运行期上下文。运行期上下文在函数执行完毕时被销毁

2> js的加载

  • 大多数浏览器使用单线程处理UI更新和JavaScript运行等任务,那么在对js进行解析时,浏览器的页面加载会被阻塞。这会导致加载页面之初会呈现一段时间的空白,只有当js加载完成时,浏览器才会去继续加载页面
  • 解决方法:

代码


 <script type="text/javascript">
   function loadScript(url,callback){
      var script = document.createElement("script");
      script.type="text/javascript";
      if(script.readyState){
          script.onreadystatechange = function(){
              if(script.readyState == "loaded" || script.readyState == "complete"){
                   script.onreadystatechange = null;                   
                   callback();
              }
          };
      }else{
          script.onload = function(){
               callback();
          };
      }
      script.src = url;
      document,getElementByTagName_r("head")[0].appednChild(script);
   }
   loadScript("the-rest.js",function(){
        Application.init();
    });
  </script>

3> 严格模式

  1. 在整个脚本的第一行使用"user strict",将会使脚本的运行进入严格模式。严格来说,是放在产生实际运行结果之前,如放在一个空的分号后面。
  2. 在函数的第一行使用"user strict",将会函数的运行进入严格模式
  3. 语法和行为改变
    (1) 严格模式下,使用变量必须先显示声明。在正常模式下,如果一个变量没有声明就赋值,则会默认其为全局变量。
    (2) 严格模式下的静态绑定
  4. 禁止使用while语句。因为while语句无法在编译时确定属性的所属
    
  5. 创设eval作用域。在正常模式下,eval的作用域取决于所处的作用域,也就是说:在正常模式下没有eval作用域。在严格模式下,会为eval语句创建eval作用域,eval里面定义的变量只能在eval中使用.
    

(3) 增强的安全措施
1. 禁止this关键字指向全局变量。在正常模式下,this指向全局变量,严格模式下为undefined。因此,使用构造函数时,如果忘了加new,this不再指向全局对象,而是报错。
2. 禁止在函数内部遍历调用栈。f1.caller和f1.arguments会报错
3. 禁止删除变量,只有configurable设置为true的对象属性,才能被删除。
4. 显示报错。如正常模式下,对一个只读属性赋值,只会失败不会报错。在严格模式下会报错
5. 重名错误。严格模式下,参数列表和同一作用域下属性不能重复定义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值