JS初级月考

1、Dom0级和Dom2级有什么区别?Dom2级的优势在哪?

  • Dom0级:js跟html完全分离,便于封装
    缺点:同一个Dom对象,同时间只能绑定同一个事件,如果给这个事件绑定多个事件处理函数,只能执行最后一个事件处理函数
  • Dom2级:
    1、不会跟Dom0级事件冲突,同时存在两个都会执行
    2、Dom2级可以绑定多个事件函数,不会起冲突
    +Dom2级的优势:在绑定Dom2级的事件可以随时取消,Dom0级,只能移出命名函数,不能移除匿名函数和Dom0级事件,所以在事件绑定的时候,推荐使用Dom2级命名函数的形式来绑定事件。

2、jQuery怎么绑定Dom0级和Dom2级事件?

  • 1、jQuery绑定Dom0级事件
$('ele').on('click',function(){
    console.log("DOM 0级 单击事件");
}
  • 2、jQuery绑定Dom2级事件
$('ele').click(function(){
    console.log("DOM 2级 单击事件 匿名函数");
})

//同样使用 jquery绑定 DOM 2级事件也有命名函数 和匿名函数
function a(){
        console.log("DOM 2级 单击事件 命名函数");
}
$('#box').click(a);

3、简述this 和 $(this)之间的区别是什么?

  • 两者都指向元素本身,但this是html中的用法
  • $(this)是jQuery中的方法
  • 1、从功能上没有区别两个this都是指向元素本身
  • 2、但是使用方法不一样只有$(this)可以使用 jquery提供的方法 原生this不写

4、简述深拷贝和浅拷贝的慨念,并用代码实现一个数组的深拷贝?

  • 深拷贝:(直赋值 )在对引用数据类型进行拷贝的时候,创建了一个新的对象(开辟新的内存空间),并且复制其内的变量,则认为是深拷贝。
  • 浅拷贝:(引用赋值)如果在拷贝这个对象的时候,只对基本数据类型进行了拷贝,而对引用数据类型只是做了引用的传递,而没有重新开辟一个内存空间存放这个对象,则认为是浅拷贝。
//深拷贝封装:
function copy(arr){
     var arr1 = [];
      for(var i = 0;i< arr.length;i++){
            arr1[i] = arr[i];
      }
     return arr1;
}

5、如何阻止事件冒泡和默认事件?

  • 1、阻止事件冒泡
event.stopPropagation();
window.event.cancelBubble = true;

//兼容
function bubbles(e){
  var ev = e || window.event;
  if(ev && ev.stopPropagation) {
    //非IE浏览器
    ev.stopPropagation();
  } else {
    //IE浏览器(IE11以下)
    ev.cancelBubble = true;
  }
  console.log("最底层盒子被点击了")
}
  • 2、阻止默认事件
//阻止默认事件
event.preventDefault();  //IE下
window.event.returnValue = false; //非IE


//谷歌及IE8以上
e.preventDefault();
//IE8及以下
window.event.returnValue = false;
//无兼容问题(但不能用于节点直接onclick绑定函数)
return false;

6、请解释一下事件流、事件冒泡和事件捕获?

  • 1、事件流: 当页面中一个Dom触发事件,浏览器会从window开始依次向下遍历来查找这个Dom元素
    (window => document => html => body => 祖先元素 => 父元素 => 目标元素)
  • 2、事件捕获:在找的过程中,如果遇到当前元素也有相同的事件且事件没有触发,则触发这个事件,如果当前元素没有相同事件,或者事件已经被触发,则继续向下遍历,直到找到目标元素
  • 3、事件冒泡:找到目标元素,触发目标元素上的事件,触发完毕后,开始按顺序一层一层的往上走直到window,在往上走的过程中,如果遇到当前元素,含有相同事件且没有被触发,则触发,如果当前元素没有相同事件获取已经被触发,则继续向上遍历,直到window结束。
  • 事件捕获和事件冒泡同一个事件流只能有一个生效,一般情况下,js默认执行 事件冒泡

7、常用的事件类型

    1. 鼠标点击事件
      click 单击事件
      dblclick 双击事件
      contextmenu 右击事件 默认事件:右击打开默认菜单栏
      mousedown 鼠标按下事件
      mouseup 鼠标释放事件
    1. 鼠标移动事件
      mouseover 鼠标移入事件 --- 事件冒泡
      mouseout 鼠标移出事件 --- 事件冒泡
      mouseenter 鼠标移入事件 (不触发事件冒泡)
      mouseleave 鼠标移出事件 (不触发事件冒泡)
      mousemove 鼠标移动事件
      mousewheel 鼠标滚轮事件
    1. 键盘事件
      keydown 键盘按下事件
      keyup 键盘抬起事件
    1. 表单事件
      focus 获取焦点时触发
      blur 表单元素失去焦点时触发
      input 表单元素 输入时 触发同步 (触发一次 更新一次)
      change 当表单元素 输入时 里面数值发生改变 且失去焦点
    1. window 事件
      scroll 滚动条事件 滚动条高度改变 触发事件
      resize 监听浏览器窗口 的大小变化
      load 加载完毕执行 只触发一次
    1. img事件
      load 加载完毕执行 只触发一次
      error 图片加载失败执行

8、常见的Dom操作

    1. 获取 DOM
      document.getElementById(); 根据 Id 获取节点
      document.getElementsByClassName(); 根据 class名 获取DOM节点
      document.getElementsByTagName(); 根据 标签名 获取 DOM节点
      document.querySelector(); 根据 属性选择器 获取节点
      document.querySeleteorAll();
      .nextSibling 获取下一个兄弟节点
      .nextElementSibling 获取下一个 兄弟标签节点
      .previousSibling 获取上一个兄弟节点
      .previousElementSibling 获取上一个兄弟标签节点
      .lastChild/fristChild 获取 最后一个 / 第一个 子节点
      .lastElementChild/fristElementChild 获取 最后一个 / 第一个 标签子节点
      .childNodes 获取子节点数组
      .children 获取子元素节点
      .parentNode 获取父元素整个结构
    1. 创建 DOM 节点
      document.createElement('标签名');
      父标签.appendChild('指定节点'); 插入 DOM 节点
      父节点.replaceChild(旧节点,新节点); 用新节点替代指定的子节点
    1. 删除 DOM 节点
      父节点.remove(子节点); 删除指定的 子节点
      节点.remove() 删除 自身节点

9、简述cookie和localStorage的区别,并写出各自的添加,获取数据的方法。

  • cookie:(用服务环境打开 Live Server cookie)
    1、大小只有5kb
    2、保存到cookie中的数据只能是字符串
    3、关闭浏览器,cookie消失
  • localStorage:
    1、大小为5M
    2、保存到localStorage中的数据是一个对象
    3、生命周期为不手动删除则永远存在
    4、兼容IE8以上
//设置cookie的方法
function setCookie(name, value) {
        // document.cooki
//将获取到的字符串转化为数组,以分号和空格分隔开
    cook = cook.split('; ')
    //声明一个新数组,用来保存转化好的数组
    var arr = [];
    for(var i = 0 ; i < arr..length; i++){
        arr[i] = cook[i].split('=');
        if(arr[i][0] == name){
            return arr[i][1];
        }
    }
}


//封装一个 设置 localStorage 的方法
function setLocal(key,value){
        localStorage[key] = JSON.stringify(value);
}

//获取
var local = localStorage.num;
local = JSON.stringify(local);
console.log(local);

10、简述location对象的组成

  • localtion:
    1、host 设置或返回主机名和当前 URL 的端口号。
    2、 hostname 设置或返回当前 URL 的主机名。
    3、href 设置或返回完整的 URL。
    4、pathname 设置或返回当前 URL 的路径部分。
    5、port 设置或返回当前 URL 的端口号。
    6、 protocol 设置或返回当前 URL 的协议。
    7、search 设置或返回从问号 (?) 开始的 URL(查询部分)`)

  • Location 对象方法:
    1、assign() 加载新的文档。
    2、reload() 重新加载当前文档。
    3、replace() 用新的文档替换当前文档。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容