js小点总结

 

1. 事件代理:
   事件代理利用了时间冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。

function getEventTarget(e) {
  e = e || window.event;
  return e.target || e.srcElement;
}

2. 解释下js中this是如何工作的。

     1) this永远指向函数运行时所在的对象,而不是函数被创建时所在的对象。匿名函数或不处于任何对象的函数指向window
     2)call,apply指定this是谁就是谁
     3)普通的函数调用,函数被谁调用this就是谁
3. 未定义的或者定义了未被赋值的为 undefined,null是特殊的object是关键字表明变量没有有效的值,NaN是特殊的number
    运算时null与undefined都可以被类型转换为false,但不等值于false:

typeof NaN == "number"
typeof null == "object"
typeof undefined == "undefined"
null与undefined相等,NaN不与任何相等与他自己也不相等
null == undefined true
null == null true
undefined == undefined true
NaN == NaN false
NaN == false false
null == false false
isNaN(x)

4. JS定时函数

    var interv = setInterval(function,200);  clearInterval(interv ); 循环执行直到被清除
    setTimeout(function,200); 延迟多长时间执行
5. localStorage, sessionStorage和cookie的区别?
    1)localStorage和sessionStorage是html5的web storage api提供的,有getItem、setItem、removeItem、clear等方法,
提供更大容量的存储
    2)sessionStorage是会话级别的存储,结束会话时数据消失,localStorage用于持久化本地存储
    3)cookie大小首先,可与服务器进行交互,没有提供存取值的方法。
6. JS全局属性方法
    Infinity 正负无穷大
    NaN 非数字
    undefined 没有定义的或者未赋值的
    isNaN() 判断是不是Number类型
    Number() 转换为数字
    Boolean() 0,"",null,undefined false
    String() 转换成字符串
    parseInt()
    parseFloat()
7. BOM
    window: 全局变量是window对象的属性,全局方法是window对象的方法,HTML的document也是window对象的属性
    navigator object: 记载一些关于浏览器的信息。navigator.userAgent
    screen object: 当前屏幕的宽高
    history object: history.forward();history.back();
    location object: 获取当前页面URL,{"hostname":"","pathname":"","port":"","protocol":""}
    var w=window.innerWidth|| document.documentElement.clientWidth|| document.body.clientWidth;
    var h=window.innerHeight|| document.documentElement.clientHeight|| document.body.clientHeight;
8. JS操作数组的方法:

concat() 连接两个或更多的数组,并返回结果
sort() 对数组的元素进行排序
reverse() 颠倒数组中元素的顺序
join() 把数组中所有元素放入一个字符串,元素通过指定的分隔符进行分隔
toString() 把数组转换为字符串,并返回结果
pop() 删除并返回数组的最后一个元素
push() 向数组的末尾添加一个或更多的元素,并返回新的长度
shift() 删除并返回数组的第一个元素
unshift() 想数组的开头添加一个或更多的元素,并返回新的长度
slice() 从某个已有的数组返回指定的元素
splice() 删除元素,并向数组添加新元素

9. JS操作字符串的方法:

concat()    连接字符串
indexOf()    检索字符串
lastIndexOf()    从后向前搜索字符串
match() 找到一个或多个正则表达式的匹配数组
search() 检索与正则表达式匹配的值,返回位置
replace() 替换与正则表达式匹配的字串
split() 把字符串分割为字符串数组
slice() 提取字符串的片段,并在新的字符串中返回被提取的部分
substr() 从起始索引号提取字符串中指定数组的字符
substring() 提取字符串中指定的索引号之间的字符

10. js操作DOM

document.getElementById();
document.getElementsByTagName();
document.getElementsByClassName();
document.getElementById().attribute = val;
document.getElementById().style.property = style;

13. 跨域访问解决办法:

   1)Chrome浏览器解决方法: 在chrome快捷目标后加上 --args --disable-web-securitys
   2)iframe里面都加上document.domain = "aa.com"
   3)JS文件注入,请求是使用<script>标签来请求的
   4)jquery ajax支持get请求的跨域jsonp方式
        a.com/a.jsp         

function test(data){alert(data);}
<Script src="http://www.b.com/index!getData.action?jsoncallback=test"></script>
b.com/b.jsp
$(param.jsoncallback)({"name":"11","age":11});
客户端接收的response
test({"name":"11","age":11});
5)使用html5的配置http头协议

    服务器设置

header('Access-Control-Allow-Origin:http://www.a.com');
header('Access-Control-Allow-Methods:POST,GET');
header('Access-Control-Allow-Credentials:true');
echo 'Cross-domain Ajax';

   前端发送请求

var xhr = new XMLHttpRequest(); ;
xhr.open('GET', 'http: //b.com/cros/ajax.php', true);
xhr.withCredentials = true;
xhr.onload = function () { 
alert(xhr.response);//reposHTML;
}; 
xhr.onerror = function () {
alert('error making the request.');
};
xhr.send();

14. Ajax   

$.ajax({
       url: 'index.php?route=profile/favorite/loadMore',
       type: 'post',
       data: '',
       dataType: 'json',
       success: function(json) {}
   });

15. jQuery操作属性
    hasClass(), addClass(), removeClass(), toggleClass(), attr(), removeAttr(), val()
    $("input[name='name'][value='name1']").prop("checked",true)

16.  解码字符串

       escape(string)返回已编码的字符串的副本, 不会对ASCII字母,数字和标点符号 - _ . ! ~ * ' ( )进行编码。其他所有的字符都会被转移序列替换。
       encodeURI(URIstring)参数作为URI,返回URIString的副本, 不会对ASCII字母,数字和标点符号 - _ . ! ~ * ' ( )进行编码。不会对URI中具有特殊含义的ASCII变电符号;/?:@&=+$,#转移
       encodeURIComponent(URIstring)参数作为URI的一部分, 不会对ASCII字母,数字和标点符号 - _ . ! ~ * ' ( )进行编码。其他字符;/?:@&=+$,#由一个或多个十六进制的转义序列替换
       escape()除了ASCII字母,数字和特定的符号外,对传进来的字符串全部进行转义编码,所以对URI进行编码用encodeURI(),此方法对URI中的合法字符串不会被编码。encodeURIComponent()在编码单个URIComponent()它可以将参数中的中文,特殊字符进行转移而不会影响整个URL

17. 各种类型转换

      数字转换成字符串:("" +) > String() > .toString() > new String()

      浮点转化成整型:Math.floor()或者Math.round()

      字符串转化为数字:parseInt()

        var myVar = "3.14159",
        str = "" + myVar, //  to string  
        i_int = ~ ~myVar,  //  to integer  
        f_float = 1 * myVar,  //  to float  
        b_bool = !!myVar,  /*  to boolean - any string with length  and any number except 0 are true */
        array = [myVar];  //  to array  
posted @ 2014-06-02 21:37  海边菩提  阅读(362)  评论(0编辑  收藏  举报