JS-Web-Api面试题

这篇主要是说JS的一些api,其中包括DOM,BOM,事件,ajax,存储,都是实际开发会用到的,但是这些都是JS的哦,不涉及jquery,vue框架等。

一、DOM操作

知识点

1. 事件模型
  • 捕获
  • 冒泡
2. 事件流
  • 捕获用户行为 -> 目标阶段 -> 冒泡
  • 捕获的具体流程:
    window -> document -> html -> body -> 元素之间的传递
    冒泡是从下往上
3. Event对象的常见用法
  • 阻止冒泡:event.stopPropagation()
  • 阻止默认行为:event.preventDefault()
  • 同一个元素绑定多个事件,点击哪个执行哪个:event.stopImmediatePropagation()
  • 绑定当前事件的元素:event.currentTarget(事件代理时候会用)
  • 当前被点击的元素:event.target(事件代理时候会用)
4. DOM结构操作
  • 新增节点
var p = document.createElement('p')
p.innerHTML = 'new P';
var div1 = document.getElementById('div1');
div1.appendChild(p);
  • 移动节点
var div1 = document.getElementById('div1');
var div2 = document.getElementById('div2');
div1.appendChild(div2);
  • 获取父元素,获取子元素
var div1 = document.getElementById('div1');
console.log(div1.parentNode);
console.log(div1.childNodes);
  • 删除节点
var div1 = document.getElementById('div1');
div1.removeChild(div1.childNodes[1]);

问题

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

树型结构

2. DOM操作常用的api有哪些
  • 获取及修改attribute、property
  • 上面说的DOM结构操作
    • 添加节点
    • 移动节点
    • 删除节点
    • 获取子节点
    • 获取父节点
3. DOM中attr和property有何区别

attribute是对html标签属性的修改
property是对一个JS对象的属性的修改

二、BOM操作

1. 检测浏览器类型

navigator.userAgent

2. url不同部分的拆解

在控制台通过location去查看对象有哪些属性
如下图:

location.png

3. history

  • history.back()

4. screen

  • screen.width(屏幕宽度)
  • screen.height(屏幕高度)

三、事件

1. 编写一个通用的事件监听

function bindEvent(ele, type, selector, fn) {
  // 没有事件代理时,将第三个参数赋值给fn
  if (fn == null) {
    fn = selector;
    selector = null;
  }
  ele.addEventListener(type, function (e) {
    var target = e.target;
    if (selector) {
      // 使用事件代理
      if (target.matches(selector)) {
        fn.call(target, e);
      }
    } else {
      // 不使用事件代理
      fn(e);
    }
  });
}

2. 事件冒泡

  • DOM树型结构
  • 事件逐层冒泡
  • 阻止事件冒泡
  • 因为有事件冒泡,所以有事件代理

3. 对于一个有无限下拉的图片的操作,怎么给每个图片绑定事件

  • 使用事件代理
  • 什么是事件代理
    就是给父元素绑定事件,子元素和父元素都会有这个事件
  • 使用代理的好处:
    • 代码简洁
    • 减少浏览器内存消耗

四、ajax及http

知识点

1. readyState
  • 0 -(未初始化)还没有调用send方法
  • 1 -(载入)已经调用send方法,正在发送
  • 2 - (载入完成)已经发送完成,send执行完成,已经接受到全部相应内容
  • 3 - (交互)正在解析响应内容
  • 4 - (完成)解析响应内容完成,客户端可以调用了
2. status
  • 1xx - 请求已接收,继续处理
  • 2xx - 表示处理成功,如200
    • 200:客户端请求成功
    • 206:客户端发送了一个带有Range的GET请求头,服务器完成了他(video,audio)
  • 3xx - 需要重定向,浏览器直接跳转
    • 301:已经转移到新的url
    • 302:临时转移到了新的url
    • 304:缓存
  • 4xx - 客户端请求错误,如404
    • 400:客户端有语法错误
    • 401:请求未授权(参数和方式可能错误)
    • 403:资源禁止被访问
    • 404:资源不存在
  • 5xx - 服务端错误
    • 500:服务器错误
    • 503:服务器宕机或者过载
3. 跨域
  • 什么是跨域
    浏览器会有同源策略,域名,协议,端口只要有一个不同就是跨域

    • 协议:http,https
    • 端口:http协议默认是80,https默认是443
  • 可以跨域的三个标签

    • img:(如果图片不做防盗链,是可以在其他的域名下访问),可以用作打点统计,统计的网站是其他域
    • link:因为不受跨域限制,所以可以使用CDN链接
    • script:可以使用CDN链接,可以使用JSONP
4. http的特点
  • 简单快速
  • 灵活
  • 无连接
  • 无状态

问题

1. 手动编写一个ajax,不依赖其他库
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
  if(xhr.readyState === 4) {
    if(xhr.status === 200) {
      alert(xhr.responseText);
    }
  }
}
xhr.send(null)
2. 跨域的几种实现方式
  • JSONP
  • 服务端设置头信息CORS
3. POST和GET的区别
  • GET请求浏览器回退是无害的,但是POST会重新发送请求
  • GET产生的地址会被收藏,但是POST不会
  • GET会被浏览器主动缓存,而POST的不会,需要手动设置
  • GET请求只能进行url编码,而POST支持多种编码方式
  • GET请求的参数会被完整保留到历史记录里,POST参数不会保存
  • GET请求在url中传送的参数有长度限制,POST没有
  • 对参数的数据类型,GET只接受ASCII字符,POST没有限制
  • GET参数会暴露在url中,不要放敏感信息
  • GET参数通过url传递,POST通过request body中

五、存储

描述一下cookie,localStorage,sessionStorage的区别

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

推荐阅读更多精彩内容