js试题总结(2)

工具类

1.获取2017-06-10格式的日期

function formatDate(orgDate) {
        if (!orgDate) {
            orgDate = new Date()
        }
        var year = orgDate.getFullYear();
        var month = orgDate.getMonth();
        var date = orgDate.getDate();
        if (month < 10) {
            month = '0' + month
        }
        if (date < 10) {
            date = '0' + 10
        }
        var format = year + '-' + month + '-' + date;
        return format;
    }

2.获取随机数,要求的长度一致的字符串格式

  function getRandom(length) {
        var num = Math.random();
        num += '0000000000';
        return num.substring(0,length);
    }

DOM操作

3.DOM是哪种基本的数据结构

4.DOM操作常用的API有哪些

https://www.cnblogs.com/clairexia/p/6635029.html
网上找了一篇文章

5.DOM节点的attr和property有何区别

property是DOM中默认的基本属性,是JavaScript里的对象;
attribute是HTML标签上的特性,它的值只能够是字符串;
 

事件

6.编写一个通用的事件监听函数

最简单的可以这么写:

function bindEvent(elem,type,fn){
    elem.addEventListener(type,fn)
}

优化的:

function bindEvent(elem,type,selector,fn){
   if(fn==null){
       fn=selector
       selector=null
   }
   elem.addEventListener(type,function(e){
       var target
       if(selector){
           target=e.target;
           if(target.matches(selector)){
               fn.call(target,e)
           }
       }
           else{
               fn(e)
           }
   })
}

var div3=document.getElementById('div3');
bindEvent(div3,'click','A',function(e){
   console.log(this.innerHTML)
})

7.描述事件冒泡的过程

这个百度很多,我的简单理解是:子组建和父组件绑定了一样的方法,如onclick,当子组件触发自身onclick,会向上冒泡,触发父组件onclick事件

8.对一个无限下拉加载页面,如何给每个图片绑定事件

事件代理,不把事件绑定在每个img上,绑定在父组件上

Ajax

9.手动编写一个ajax,不依赖第三方库

var xhr=XMLHttpRequest();
xhr.open('GET','xx',false);
xhr.onreadystatechange=function(){
    if(xhr.readyState==4){
        if(xhr.status==200){
        console.log(xhr.responseText)
        }
    }
}

xhr.send(null)

其他

10.描述一下cookie、sessionStorage、localStorage的区别

cookie:用于客户端和服务端通信
每次请求都会携带,只有4kb,api简单需要封装才能用
sessionStorage、localStorage:最大5M,请求不携带,api简单易用
session生命周期在浏览器关闭时结束

你可能感兴趣的:(js试题总结(2))