分享

js基础(一)

 初出茅庐小菜鸟 2019-08-01

1、基本数据类型:string、boolean、number、undefined、null

     引用数据类型:object、array、Date、regexp、function

2、判断数据类型:

      1)、通过专有方法判断:push(),pop();

      2)、obj instanceof Array 返回值判断

      3)、es5和jq都有方法array.isarray()。

      4)、tostring.call(param)判断;返回格式【object Undefined】判断

3、绑定事件的方式:

      1)、直接在dom里绑定:<div onclick="test()"></div>

      2)、在js中通过onclick绑定:xxx.onclick=test;

      3)、通过事件绑定:dom.addEventListener("click",test,boolean)

4、事件流模型:

      1)、事件冒泡:事件由最具体的元素接收,然后逐级向上传播;

      2)、事件捕捉:事件由最不具体的节点接收,然后逐级向下,一直到最具体元素

      3)、dom事件流:三个阶段:事件捕捉,目标阶段、事件冒泡;

5、阻止事件传播:

      1)、w3c,使用stopPropagation()方法阻止冒泡;阻止默认事件:preventDefault()。

      2)、ie中cancelBubble = true阻止事件冒泡;阻止默认事件:window.event.returnValue = false。

6、Ajax(异步的JavaScript和xml)

      1)、优点:(1)、可以使页面不重载全部内容的情况下加载局部内容,降低数据传数量

         (2)、避免用户不断刷新或者跳转页面,提高用户体验。

      2)、缺点:(1)、对搜索引擎不友好;

         (2)、要实现ajax前后退功能成本较大;

         (3)、跨域问题限制。

7、JSON:

            JSON是一种轻量级的数据交互格式,ECMA(欧洲计算机制造商协会)的一个子集。

     1)、优点:

        轻量级,占用带宽小易于人的阅读和编写,便于机器(js)解析,支持复合数据类型(数组、对象、字符、数字),能直接为服务器端代码使用。大大简化了服务器和客户端的代码开发量。

     2)、缺点:相对xml通用性较差,数据可描述性较差。

8、undefined出现原因:

              当只声明变量,并未赋值初始化的时候这个变量的值就是undefined。

9、for循环效率问题

     1)、for(var i=0;i<arr.length;i++)

     2)、for(var i in arr)

     3)、for(var i=0,len=arr.length;i<len;i++)

     第三种效率更高!

10、函数声明与函数表达式的区别:解析器会率先读取函数声明,并使在执行任何代码之前可用(也就是函数声明提升)

函数表达式则是解析器执行到他所在的代码,才会真正的执行

11、apply与call的区别:作用相同都是改变this的指向,但apply传入的是参数数组,call是离散型参数

12、伪数组:无法直接调用数组的方法,但仍有length属性

      1)、转化为真的数组:Array.prototype.slice.call(fakeArray)

13、拖拽:

      1)、mousedown事件触发后,开始拖拽

      2)、mousemove时,通过e.clientX和clientY获取拖拽位置,实时更新位置;

      3)、mouseup时,拖拽结束。

14、ajax:

ajax({

                            url: "./TestXHR.aspx",       //请求地址

                            type: "POST",                            //请求方式

                            data: { name: "super", age: 20 },    //请求参数

                            dataType: "json",

                            success: function (response, xml) {

                              // 此处放成功后执行的代码

                            },

                            error: function (status) {

                              // 此处放失败后执行的代码

                            }

                          });

                          function ajax(options) {

                            options = options || {};

                            options.type = (options.type || "GET").toUpperCase();

                            options.dataType = options.dataType || "json";

                            var params = formatParams(options.data);

                            var xhr;

                            //创建 - 第一步

                            if (window.XMLHttpRequest) {

                              xhr = new XMLHttpRequest();

                            } else if(window.ActiveObject) {         //IE6及以下

                              xhr = new ActiveXObject('Microsoft.XMLHTTP');

                            }

                            //连接 和 发送 - 第二步

                            if (options.type == "GET") {

                              xhr.open("GET", options.url + "?" + params, true);

                              xhr.send(null);

                            } else if (options.type == "POST") {

                              xhr.open("POST", options.url, true);

                              //设置表单提交时的内容类型

                              xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

                              xhr.send(params);

                            }

                             //接收 - 第三步

                            xhr.onreadystatechange = function () {

                              if (xhr.readyState == 4) {

                                var status = xhr.status;

                                if (status >= 200 && status < 300 || status == 304) {

                                  options.success && options.success(xhr.responseText, xhr.responseXML);

                                } else {

                                  options.error && options.error(status);

                                }

                              }

                            }

                          }

                          //格式化参数

                          function formatParams(data) {

                            var arr = [];

                            for (var name in data) {

                              arr.push(encodeURIComponent(name) + "=" + encodeURIComponent(data[name]));

                            }

                            arr.push(("v=" + Math.random()).replace("."));

                            return arr.join("&");

                          }

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多