您的位置:首页 > Web前端 > JavaScript

javaScript的再次学习

2016-09-13 10:41 211 查看

先前有学习过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();
}

a4bd
};
}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) 严格模式下的静态绑定

1. 禁止使用while语句。因为while语句无法在编译时确定属性的所属

2. 创设eval作用域。在正常模式下,eval的作用域取决于所处的作用域,也就是说:在正常模式下没有eval作用域。在严格模式下,会为eval语句创建eval作用域,eval里面定义的变量只能在eval中使用.

(3) 增强的安全措施

1. 禁止this关键字指向全局变量。在正常模式下,this指向全局变量,严格模式下为undefined。因此,使用构造函数时,如果忘了加new,this不再指向全局对象,而是报错。

2. 禁止在函数内部遍历调用栈。f1.caller和f1.arguments会报错

3. 禁止删除变量,只有configurable设置为true的对象属性,才能被删除。

4. 显示报错。如正常模式下,对一个只读属性赋值,只会失败不会报错。在严格模式下会报错

5. 重名错误。严格模式下,参数列表和同一作用域下属性不能重复定义
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: