javacript学习知识系统整理

js中使用typeof 得到有哪些类型?,只能区分值类型,引用类型区分不出来

    undefind
    string
    number
    boolean
    object
    function

变量类型?

   引用类型,(数组,函数,对象)
   值类型

变量计算-强制类型转化,以下操作会发生类型转化

字符串拼接
==运算符
if语句
逻辑运算

何时使用== ,何时===?

100='100'      //true
0=''           //true
null==undefind //true

如何理解json

json只不过是一个js对象而已

window.onload 和domcontentloaded的区别
创建10个a标签,点击时弹出来对应的编号
简述创建一个模块加速器,实现一个类似require.js的基本功能
实现数组的随机排序
原型和原型链
如何判断一个变量是否为数组类型?
写一个原型链继承的例子
描述new一个对象的过程
构造函数

构造函数-拓展
原型规则和示例

外部script 异步加载的一种几种方式

<script async  src="" ></script>

你对css盒模型的认识?
考察基本概念, 标准模型+ie模型
标准模型和IE模型的区别,高度和宽度不同。
css 如何设置这2种模型
如何设置和模型的对应高和宽
根据盒模型解释边距重叠问题
bfc,边距解释方案
ifc

bfc(边距重叠解决方案)
bfc的基本概念
bfc的原理
如何创建bfc
bfc的使用场景

dom事件
基本概念,dom事件的级别

dom0   element.onclick=function(){}
dom1   没有设计dom的事件
dom2   element.addEventListener('click',function(){},false)
dom3   element.addEventListener('keyup',function(){},false)
       dom 增加了鼠标相关事件

dom 事件模型 (捕获和冒泡)

捕获,从上到下的过程,
冒泡。从下到上的过程
    第一阶段。  捕获
    第二阶段。  目标阶段
    第三阶段。  冒泡

dom 事件流
捕获dom事件的具体流程

 window -> document ->html  标签->body->....

冒泡反之。。。
event对象的常见应用

    event.preventDefault();//阻止默认行为
    event.stopPropagation();//阻止冒泡
    event.stopImmediatePropagation();//阻止行为
    event.currentTarget();//子元素事件代理
    event.target();//父集事件
    ....

自定义事件

    var eve=new Event('custome')
    dom.addEventListener('custome',function(){})
    dom.dispatchEvent(eve)

http协议
http协议的主要特点

简单快速,灵活,无连接,无状态

http报文的组成部分

请求报文,相应报文
请求行,请求头,空行,请求体
状态行,相应头,空行,响应体

http方法

post 和get的区别

http状态码

什么是持久连接

keep-alive.  1.1版本支持

什么是管线化

js运行机制

      // console.log(1);
      // setTimeout(function () {
      //     console.log(2);
      // }, 0);
      // console.log(3);
      // console.log(4);
      //
      // console.log('A');
      // setTimeout(function () {
      //     console.log('B');
      // }, 0);
      // while (1) {
      //
      // }
      //
      for (var i = 0; i < 4; i++) {
          setTimeout(function () {
              console.log(i);
          }, 1000);
      }

通讯类,跨域通讯的几种方式

jsonp
hash
postmassage
websocket
cors 本质是fetch()
// jsonp工作原理. 
// 利用hash,场景是当前页面 A 通过iframe或frame嵌入了跨域的页面 B
// 在A中伪代码如下:
var B = document.getElementsByTagName('iframe');
B.src = B.src + '#' + 'data';
// 在B中的伪代码如下
window.onhashchange = function () {
          var data = window.location.hash;
};

// postMessage
// 窗口A(http:A.com)向跨域的窗口B(http:B.com)发送信息
Bwindow.postMessage('data', 'http://B.com');
// 在窗口B中监听
Awindow.addEventListener('message', function (event) {
          console.log(event.origin);
          console.log(event.source);
          console.log(event.data);
}, false);
// Websocket【参考资料】http://www.ruanyifeng.com/blog/2017/05/websocket.html
      var ws = new WebSocket('wss://echo.websocket.org');
      ws.onopen = function (evt) {
          console.log('Connection open ...');
          ws.send('Hello WebSockets!');
      };
      ws.onmessage = function (evt) {
          console.log('Received Message: ', evt.data);
          ws.close();
      };
      ws.onclose = function (evt) {
          console.log('Connection closed.');
      };

// CORS【参考资料】http://www.ruanyifeng.com/blog/2016/04/cors.html
// url(必选),options(可选)
      fetch('/some/url/', {
          method: 'get',
      }).then(function (response) {

      }).catch(function (err) {
        // 出错了,等价于 then 的第二个参数,但这样更好用更直观
     });

安全类

csrf
概念  跨站请求伪造,(利用接口漏洞做想做的事)
   攻击原理   cookie
解决办法
   加token验证,
   加referer验证
   隐藏令牌
xss 跨域脚本攻击
核心原理;在页面注入script脚本

算法类

排序(快速排序,选择排序,希尔排序,冒泡排序)
https://segmentfault.com/a/1190000009426421
https://segmentfault.com/a/1190000009366805
https://segmentfault.com/a/1190000009461832
堆栈,队列,链表
https://juejin.cn/post/6844903459993419790
递归
https://segmentfault.com/a/1190000009857470
波兰式或逆波兰式
http://www.cnblogs.com/chenying99/p/3675876.html

页面性能提升

提升页面性能的方法
1,资源压缩合并,减少http请求
2.非核心代码异步加载-> 异步加载的方式-> 异步加载的区别
3.利用浏览器缓存->缓存分类->缓存的原理
4.使用cdn
5.预解析dns

dns预解析的实现

预解析的实现:
  1、用meta信息来告知浏览器, 当前页面要做DNS预解析:<meta http-equiv="x-dns-prefetch-control" content="on" />
  2、在页面header中使用link标签来强制对DNS预解析: <link rel="dns-prefetch" href="http://bdimg.share.baidu.com" />
  注:dns-prefetch需慎用,多页面重复DNS预解析会增加重复DNS查询次数。

异步加载方式

1.动态脚本加载
2.defer
3.asyns

异步加载的区别

1.defer 是在html解析完后才会执行,如果是多个,按照顺序执行
2.asyns 是在加载完后后立即执行,如果是多个,执行顺序和加载顺序无关

浏览器缓存
1)。缓存分类

1.强缓存,
2.协商缓存

错误监控

即使错误捕获
1)try catch 
2)winow.onerror
资源加载错误
1)object.onerror
2) performance.getEntries()
3) Error事件捕获
使用 window..addEventListener('error',function(){
console.log('错误信息')
},false)

上报错误的基本原理

1)使用ajax通讯方式上报
2)使用image对象上报。 
(new Image).src='http://域名/api/error'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值