zoukankan      html  css  js  c++  java
  • 刷题积累

    1.原声js事件委托;

    2.用原生的js写个完整的get请求;

    3.local storage,session storage,cookies的区别;

    4.window.onload和$(document).ready(function(){})的区别;

    5.跨域处理;

    6.从一个http请求后到页面加载完成后这期间的经历了哪些过程;

    7.前后端分离的好处;

    8.post和get的区别;

    9.js的性能优化;

    10.css的回流和重绘;

    11.关于闭包的理解;

    12.对象的继承;

    13.typeof和instanceof的区别;

    14.对盒子模型的理解,ie与普通盒模型的区别;

    15.w3c标准与es规范,熟悉web语义化;

    16.浏览器与移动设备的兼容性;

    17.计算一个for循环的用时;

    18.判断一个页面中是否有多个相同的id名;

    19.call,apply,bind的区别;

    20.null、undefined的区别;

    21.insertAbjacentHTML(position,content);

    22.new操作符具体干了什么

    23.获取document的所有属性

    24.var a = 2 ;console.log(a++);

    1.原生js事件委托;

     1 <ul id="dox">
     2         <li class="item">1</li>
     3         <li class="item">2</li>
     4         <li class="item">3</li>
     5         <li class="item">4</li>
     6         <li class="item">5</li>
     7 </ul>
     8 //判断点击时那一条li
     9 
    10 <script>
    11     var ul = document.getElementById("dox");
    12     var lis = ul.getElementsByTagName("li");
    13     ul.addEventListener("click",function(e){
    14         e = e||window.event;
    15         var target = e.target||e.srcElement;
    16         alert([].indexOf.call(lis,target));
    17     })
    18 </script>

    3.local storage,session storage,cookies的区别;

     1     3.1.1local storage 能在浏览器端存储键值对数据,页面关闭后数据还存着
     2 
     3   3.1.2只能存储字符串
     4 
     5   3.1.3也可以存储字符串化的json数据
     6 
     7  
     8 
     9   3.2.1session storage只能存储当前会话的数据,一旦关闭浏览器或者当前页数据就会被自动清理掉
    10 
    11  
    12 
    13   3.3.1cookies的存储大小受到限制
    14 
    15   3.3.2只能存储字符串
    16 
    17   3.3.3增加了文档的传输的负载
    18 
    19   3.3.4能跟服务器端进行通信

    4.window.onload和$(document).ready(function(){})的区别;

    1 1.加载时间的不同 1.1window.onload是所有的文件(包括图片等)加载完后再加载,1.2$(document).ready(function(){})是在dom文件加载完后就加载
    2 
    3 2.执行的个数的不同 2.1window.onload 是只会执行一个,2.2是所有的$(document).ready(function(){})代码块都会执行
    4 3.是否可以缩写 3.1window.onload没有 3.2$(document).ready(function(){})可以写成$(function(){})

    6.从一个http请求后到页面加载完成后这期间的经历了哪些过程;

     1 1.域名解析 查看chrome的dns缓存
     2 
     3     1.1浏览器搜索自身的dns缓存
     4 
     5     1.2搜索操作系统自身的dns缓存(浏览器没有找到缓存或缓存已失效)
     6 
     7     1.3读取本地的host文件(系统安装文件下的---一般在"windows-system32-drivers-etc-host)")
     8 
     9     1.4浏览器发起一个dns的系统调用
    10 
    11         1.4.1宽带运营商服务器查看本身的缓存
    12 
    13         1.4.2运营商服务发起一个迭代dns解析的请求
    14 
    15             1.4.2.1先去找根域的dns的ip地址,根域解析imooc.com的com是顶级域,然后又去顶级域中找,然后又去imooc.com的域的dns(域名注册商提供)
    16 
    17 2.运营商服务器把结果返回给操作系统,操作系统内核同时缓存起来
    18 
    19 3.操作系统内核把结果返回给浏览器
    20 
    21 4.最终浏览器拿到www.imooc.com对应的ip地址
    22 
    23 5.浏览器获得域名对应的ip地址后发起http"三次握手"
    24 
    25     5.1.客户端向服务器发送发送一个syn(同步序列号)(syn=j)包,并进入syn_sent状态,等待服务器确认,
    26 
    27     5.2服务器接受客户端的syn包,必须确认客户的syn(ack=j+1),同时自己也发送一个syn包(syn=k),即syn+ack,此时服务器进入syn_recv状态
    28 
    29     5.3客户端收到服务器的syn+ack包,向服务器发送确认ack包,此包发送完毕,客户端和服务器进入established(tcp连接成功)状态,完成三次握手。
    30 
    31 6.tcp/ip连接建立起来后,浏览器就可以向服务器发送http请求了 eg:用http的get方法请求
    32 
    33 7.服务器接受到了这个请求根据路径参数,经过后端的一些处理之后,把处理后的一个结果的数据返回给浏览器,
    34 
    35 8.浏览器拿到了整个html页面的代码,在解析和渲染时如果里面有js,css也会经过一个个的http请求,第一需要经过上面的7个步骤)
    36 
    37 9.浏览器根据拿到的资源对页面进行渲染,最终把一个完整的页面呈现个用户

     9.js的性能优化;

      

     1     9.1如果需要遍历数组,应该先缓存数组长度,放入局部变量中,避免多次查询数组长度
     2 
     3   9.2局部变量的访问数度比全局变量的数度要快,局部变量是放在函数的栈里,全局变量是window对象的成员
     4 
     5   9.3尽量避免对象的嵌套查询,如obj1.obj2.obj3.obj4,需要至少3次的遍历,尽量用局部变量保存再继续
     6 
     7   9.4在运算时尽量使用 "+="、"-="、"*="、"="替换直接赋值运算
     8 
     9   9.5将数字转换为字符的优先级---》(""+) > String() > toString() > new String();
    10 
    11     String()属于内部函数,toString()需要查询原型中的函数,new String()需要创建一个字符串对象
    12 
    13   9.6将浮点数转换为整数时,用Math比用parseInt快(Math时内部对象)
    14 
    15     Math.round(x)(把x四舍五入为最接近的整数);
    16 
    17     Math.floor(x)(返回小于等于x的最大整数--向下取整);
    18 
    19     Math.ceil(x)(返回大于等于x的最小数--向上取整);
    20 
    21   9.7尽量用json格式来创建对象,而不是var obj = new Object(),前者是直接赋值,后者要调用构造器
    22 
    23     ,还有数组用var arr = []替换var arr = new Array();前者是引擎直接解析,后者需要调用Array构造器
    24 
    25   9.8对字符串的查找用 "正则表达式"代替"循环查找"  正则是用c写成的API性能好
    26 
    27   9.9对js对象,因为创建时间和空间的开销都比较大,因此因尽量考虑用缓存
    28 
    29   9.10js循环  for(;;),while(),for(in)
    30 
    31     这三种中for(in)的效率最差,因为他会查询hash键,for(;;),while()差不多,推荐for(;;)他可以处理递增递减

    17.计算一个for循环的用时;

    1 console.time("Time");
    2 
    3     for(var i = 0;i<5;i++){console.log(i)}
    4 
    5   console.timeEnd("Time");//只能在控制台得到一个计数时间,但不能输出返回结果,也不能赋值给变量保存
     1 //如果需要计时作为数据保存,可以使用window.performance.now();
     2 
     3   var start = window.performance.now();
     4 
     5     for(var i = 0;i<5;i++){console.log(i)}
     6   var end = window.performance.now();
     7 
     8   var useTime = end - start;
     9 
    10 //如果想知道页面是何时被加载的,可以获取 var a = window.performance.timing.navigationStart 值,得到的是一个时间戳,new Date(a).ToString("yyyy-MM-dd hh:mm:ss");可以转换为字符串
    1 //也可以使用 Date.now() 函数来计时,该函数返回一个整数毫秒值 
    2 
    3  var start = Date.now();
    4     for(var i = 0;i<5;i++){console.log(i)}
    5   var end = Date.now();
    6 
    7   var useTime = end - start ;

    18.判断一个页面中是否有多个相同的id名; 

     1 <ul class="ul">
     2             <li id="itme1">1</li>
     3             <li class="cls">a1</li>
     4             <li id="itme1">2</li>
     5             <li id="itme1">3</li>
     6             <li class="cle">b1</li>
     7 </ul>
     8 <script>
     9     var ul =  document.getElementsByClassName('ul');
    10     var lis = ul[0].getElementsByTagName('li');
    11     var item1 = document.getElementById('itme1').id;
    12     var j = 0;
    13     for (var i = 0; i < lis.length; i++) {
    14         if(item1 = lis[i].id)j++;
    15     }
    16     if(j>1)console.log(item1+"这个id一共有"+j+"个")
    17 </script>

    19.call,apply,bind的区别;

    1 1.apply 、 call 、bind 三者都是用来改变函数的this对象的指向的;
    2 
    3 2.apply 、 call 、bind 三者第一个参数都是this要指向的对象,也就是想指定的上下文;
    4 
    5 3.apply 、 call 、bind 三者都可以利用后续参数传参;
    6 
    7 4.bind 是返回对应函数,便于稍后调用;apply 、call 则是立即调用 。

    20.null、undefined的区别;

    1 1.undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。典型用法是:
    2 (1)变量被声明了,但没有赋值时,就等于undefined。
    3 (2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。
    4 (3)对象没有赋值的属性,该属性的值为undefined。
    5 (4)函数没有返回值时,默认返回undefined。
    6 
    7 2.null表示"没有对象",即该处不应该有值。典型用法是
    8 (1) 作为函数的参数,表示该函数的参数不是对象。
    9 (2) 作为对象原型链的终点。

     21.insertAbjacentHTML(position,content);可以向指定的元素的指定位置插入节点元素,他不会重新解析它正在使用的元素,因为它不会破坏元素内的现有元素,这避免了额外的序列换步骤,使其比直接innerHTML操作更快

     1 <div class="c container1" >
     2     <div class="row1">
     3         hello
     4     </div>
     5 </div>
     6 
     7 <script>
     8     //使用insertAdjacentHTML
     9     var cl = document.getElementsByClassName('row1')[0];
    10     cl.insertAdjacentHTML("beforeBegin","welcome here!");//元素自身的前面
    11     cl.insertAdjacentHTML("beforeBegin","welcome here!1");
    12     cl.insertAdjacentHTML("beforeEnd","end welcome here!");//插入元素的最后一个子节点之后
    13     cl.insertAdjacentHTML("beforeEnd","end welcome here!1");
    14     cl.insertAdjacentHTML("afterBegin","come here!");//插入元素内部的第一个子节点之前
    15     cl.insertAdjacentHTML("afterBegin","come here!1");
    16     cl.insertAdjacentHTML("afterEnd","end come here!");//元素自身的后面
    17     cl.insertAdjacentHTML("afterEnd","end come here!1");
    18 </script>

    22.new操作符具体干了什么

    new运算符创建并初始化一个新对象,关键字new后跟随一个函数调用,这个函数称为构造函数(constructor),构造函数用以初始化一个新创建的对象,

    js语言核心的原始类型都包含内置构造函数,

    eg: var o = new Object(); //创建一个空对象,和{}一样

    var arr = new Array(); //创建一个空数组,和[]一样

    var d = new Data();//创建一个表示当前时间的Date()对象

    var reg = new RegExp("js");//创建一个可以进行模式匹配的RegExp对象

    22.1创建一个空对象,并且this变量引用该对象,同时还继承了该对象的原型(prototype)
    
      22.2属性和方法加入到this引入的对象中
    
      22.3新创建的对象由this所引用,并且最后隐式的返回this
    

      

    23.获取document的所有属性

      for(var k in document){
    
         console.log(k);
    
       }
    

    24.var a = 2 ;console.log(a++);

     1 a++ 先参与运算,再自增 2 ++a先自增,再参与运算 

  • 相关阅读:
    DRF初始准备
    树与二叉树知识点总结(一)
    html牛刀小试
    Python算法黑科技collection模块
    栈和队列知识点总结
    python结束程序的三种技巧
    爬虫01
    Django大结局
    Django报错 Forbidden (CSRF token missing or incorrect.): 解决方法
    Django进阶
  • 原文地址:https://www.cnblogs.com/sunnie-cc/p/6511234.html
Copyright © 2011-2022 走看看