zoukankan      html  css  js  c++  java
  • HTML,CSS,JS试题

    1.call和apply方法的用途和区别?

    用途:都改变this指向;

    区别:call传递的是连续参数,apply传递的是数组参数

    2.利用纯css构造一个三角形

    <style>
    .dom{
        width: 0px;    height: 0px;
        border-width: 40px;
        border-style: solid;
        border-color: red transparent transparent transparent;
            /*或者border-color: transparent transparent red;*/
    }
    </style>
    <div class="dom"></div>

    3.JavaScript中typeof可能返回的结果?如何检测?

    string  number object function undefined boolean

    方法:Object.prototype.toSring.call()

    调用object构造函数上的原型的toSring方法,改变它的this指向

    4.

    push():可向数组的末尾添加一个或多个元素,并返回新的长度

    pop():用于删除并返回数组的最后一个元素。

    shift():用于把数组的第一个元素从其中删除,并返回第一个元素的值

    unshift():可向数组的开头添加一个或更多元素,并返回新的长度。

    5.什么是默认事件,什么是冒泡事件?如何禁止?

    冒泡事件:即事件从最底层逐个经过上面一级级事件的过程,就是冒泡事件。在非IE浏览器中提供了一个事件对象stopPropagation,那么在IE浏览器中可以通过cancelBubble事件对象阻止。

    默认事件:浏览器的默认事件就是浏览自己的行为,比如我们在点击<a href="#">的时候,浏览器跳转到指定页面,或者是当我们滚动鼠标时页面会向下滚动,但我们按空格键和按方向键时也会向下滚动,为了更好的用户体验,这时我们就需要阻止这种行为的发生。

    阻止事件冒泡:

    function stopBubble(e) {
        if(e && e.stopPropagation) {        
        e.stopPropagation();     }else {         window.event.cancelBubble = true;        
        }     }

    阻止默认事件:

    function stopDefault(e) {
        if(e && e.preventDefault) {
            e.preventDefault();
            }else {
              window.event.returnValue = false;
              }
        return false;
    }

     

    6.异步加载的三种方案

    第一种:defer

    <script type="text/javascript" src="demo.js" defer="defer"></script>

    第二种:async

    <script type="text/javascript" src="demo.js" async="async"></script>

    第三种:创建script,插入到DOM中,加载完毕后callBack

    function loadScript(url, callback){
       var script = document.createElement("script");
       script.type = "text/javascript";
       if (script.readyState){
           //IE
          script.onreadystatechange = function(){
              if (script.readyState == "loaded" ||script.readyState == "complete"){
                   script.onreadystatechange = null;
                   callback();
                  }
           };
       } else {
        //Others: Firefox, Safari, Chrome, and Opera
         script.onload = function(){
          callback();
            };
         }
       script.src = url;
       document.body.appendChild(script);
      }                    

     

    7.你了解JS对象吗?可以简单说说自定义构造函数创建对象的原理吗?

    var this = {} return this //隐式返回this
    
    var this = Object.create(Person.prototype)return this;//显式返回

    8.有字符串“aaabbbcccdddeeefgggaa”,转换成连续不重复的字符串,eg:abcdefga

    var reg = /(.)1*/g;
    
    var str = 'aaabbbcccdddeeefgggaa';
    
    str.replace(reg,str);

    9.很多浏览器的body都有默认的margin,这个值是多少呢?

    8px;

    10.如今有一个Ul,里面有十亿个Li,要求点击li触发事件,弹出对应的li的内容

    var ul = document.getElementsByTagName('ul')[0];
    ul.onclick=function(e) {
      var event = e || window.event;
      var tar = event.target || event.srcElement;
      if(tar.tagName.toLowerCase()==="li")
      alert(tar.innerText);
    }

    考点:事件委托:“事件代理”即是把原本需要绑定的事件委托给父元素,让父元素担当事件监听的职务

    11.描述时间线的顺序

    ①、创建Document对象,开始解析web界面。document.readyState='loading'。

    ②、遇到link外部css,创建线程加载,并继续原线程的解析。

    ③、遇到外部js文件,并没设有async/defer的属性,浏览器正常加载js(阻塞),等js加载完成再执行下面的内容。

    ④、遇到外部js文件,但是设有async/defer的属性,浏览器创建新的线程进行加载,原线程继续自己的行为。(async是当加载js完毕直接就执行,defer是页面解析完毕后再执行,异步加载不允许用document.write());

    ⑤、遇到Img,先正常解析出dom结构,异步加载src,并继续进行解析。

    ⑥、当文档解析完毕(document.readyState="interative")。

    ⑦、解析完毕之后,所有设置defer的脚本会按照顺序执行。

    ⑧、document对象触发DOMContentLoaded事件,标志程序执行从同步脚本执行阶段转换为事件驱动。

    ⑨、当async的脚本加载并执行后,Img加载完成后,document.readyState="compete"。

    ⑩、以异步响应处理网络,用户操作实行交互。

  • 相关阅读:
    立方体
    file 图片预览
    [LeetCode][JavaScript]Single Number III
    [LeetCode][JavaScript]Longest Substring Without Repeating Characters
    [LeetCode][JavaScript]Missing Number
    [LeetCode][JavaScript]Course Schedule II
    [LeetCode][JavaScript]Course Schedule
    [LeetCode][JavaScript]Ugly Number II
    [LeetCode][JavaScript]Ugly Number
    [LeetCode][JavaScript]Single Number II
  • 原文地址:https://www.cnblogs.com/conlover/p/11152518.html
Copyright © 2011-2022 走看看