美文网首页前端开发鲁班小技巧全栈见习
必须记住的前端知识点(一)

必须记住的前端知识点(一)

作者: AMONTOP | 来源:发表于2019-05-15 15:36 被阅读424次

    值类型的类型判断用typeof,引用类型的类型判断用instanceof
    一切(引用类型)都是对象,对象是属性的集合
    对象都是通过函数来创建的

    1、关于闭包
    闭包就是能够读取其他函数内部变量的函数。
    主要有两种形式
    ①函数作为返回值


    image.png

    ②函数作为参数被传递
    要到创建这个函数的那个作用域中取值——是“创建”,而不是“调用”


    image.png

    2、js捕获异常

    try {
     throw new Error("Whoops!");
    } catch (e) {
     alert(e.name + ": " + e.message);
    }
    
    image.png

    3、原型对象与原型链


    image.png

    prototype:
    每个函数都有一个属性叫做prototype。
    这个prototype的属性值是一个对象(属性的集合,再次强调!),默认的只有一个叫做constructor的属性,指向这个函数本身

    image.png
    每个函数function都有一个prototype,即原型。每个对象都有一个proto,可成为隐式原型。
    每个对象都有一个proto属性,指向创建该对象的函数的prototype
    函数在定义的时候(不是调用的时候),就已经确定了函数体内部自由变量的作用域

    在函数中this到底取何值,是在函数真正被调用执行的时候确定的,函数定义的时候确定不了。
    4、阻止冒泡和默认事件
    ①阻止冒泡:
    e.stopPropagation(),IE则是使用e.cancelBubble = true
    ②阻止默认事件:
    e.preventDefault(),IE则是使用e.returnValue = false;

    javascript的return false只会阻止默认行为,而是用jQuery的话则既阻止默认行为又防止对象冒泡

    5、浏览器解析渲染过程
    ① 解析HTML生成DOM树。
    ② 解析CSS生成CSSOM规则树。
    ③ 将DOM树与CSSOM规则树合并在一起生成渲染树。
    ④ 遍历渲染树开始布局,计算每个节点的位置大小信息。
    ⑤ 将渲染树每个节点绘制到屏幕。

    6、ajax如何解析json数据,get与post方法的区别
    JQ中的Ajax可以使用数据类型dataType:“JSON”定义来接收需要的数据类型原生的AJAX可以使用JSON.parse()来或者JSON.stringify()转换接收的数据类型

    get和post都是向服务器发送一种请求,只是发送机制不同
    ① GET请求会将参数跟在URL后进行传递
    POST请求则是作为HTTP消息的实体内容发送给WEB服务器。
    ② 首先是”GET方式提交的数据最多只能是1024字节”
    Post传输的数据量大,可以达到2M。
    ③ get方式请求数据会被浏览器缓存起来,因此其他人就可以从浏览器的历史记录中读取到这些数据,例如账号密码等。在某种情况下,get方式会带来严重的安全问题。而post方式相对来说就可以避免这些问题。
    ④ Post请求必须设置Content-Type值为application/x-form-www-urlencoded;
    ⑤ 发送请求时,因为Get请求的参数都在url里,所以send函数发送的参数为null,而Post请求在使用send方法时,却需赋予其参数;

    7、js变量范围
    在函数内部,一般用var声明的为局部变量,没用var声明的一般为全局变量
    ① 全局变量 -> 在全局范围内都是可以访问的。
    ② 局部变量 -> 只能在当前作用域进行访问。
    全局变量:当前页面内有效
    局部变量:方法内有效

    8、form中的disable与readonly的区别
    共同点:都不能编辑和获取焦点。
    ①readonly只针对input(text / password)和textarea有效,而disabled对于所有的表单元素都有效,包括select, radio, checkbox, button等。
    ②readonly:使用表单post或get传递时会被传递出去。
    disable:使用表单post或get传递时不会被传递出去。
    ③readonly的显示效果是没有灰化的
    所有控件都有disabled 属性,但是不一定有readonly属性;

    9、css为什么要放在js上面:
    当浏览器遇到一个 script 标记时,DOM 构建将暂停,直至脚本完成执行,然后继续构建DOM。
    每次去执行JavaScript脚本都会严重地阻塞DOM树的构建,如果JavaScript脚本还操作了CSSOM,而正好这个CSSOM还没有下载和构建,浏览器甚至会延迟脚本执行和构建DOM,直至完成其CSSOM的下载和构建。

    CSS 优先:引入顺序上,CSS 资源先于 JavaScript 资源。
    JS置后:我们通常把JS代码放到页面底部,且JavaScript 应尽量少影响 DOM 的构建。

    10、什么是跨域?怎么解决?
    跨域是指一个域下的文档或脚本试图去请求另一个域下的资源
    同源策略:
    请求的url地址,必须与浏览器上的url地址处于同域上,也就是域名,端口,协议相同.

    ① 通过jsonp跨域(动态创建script)
    ② document.domain + iframe跨域
    ③ location.hash + iframe
    ④ window.name + iframe跨域
    ⑤ postMessage跨域
    ⑥ 跨域资源共享(CORS)
    ⑦ nginx代理跨域
    ⑧ nodejs中间件代理跨域
    ⑨ WebSocket协议跨域

    相关文章

      网友评论

        本文标题:必须记住的前端知识点(一)

        本文链接:https://www.haomeiwen.com/subject/xzbjaqtx.html