面试问题

2017-03-14  本文已影响0人  漂于行

1. JavaScript原型,原型链 ? 有什么特点?

function Person(name){
    this.name = name;
}
Person.prototype.sayName = function(){
    console.log('My name is :' + this.name);
}
var p = new Person("若愚")
p.sayName();
原型链示意图

2. 什么是闭包(closure),为什么要用它?

闭包定义过于晦涩
我理解的是 外部函数持有内部变量,且不会被销毁,闭包就是将函数内部和函数外部连接起来的一座桥梁。
作用也就是利用他的特点,可以读取函数内部的变量,让这些变量的值始终保持在内存中。

3. 如何解决跨域问题?

跨域:从一个页面去请求读或者写另一个页面的资源,突破同源策略的限制。
跨域的几种方式:

4. 一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?

1、浏览器会开启一个线程来处理这个请求,对 URL 分析判断如果是 http 协议就按照 Web 方式来处理;
2、调用浏览器内核中的对应方法,比如 WebView 中的 loadUrl 方法;
3、通过DNS解析获取网址的IP地址,设置 UA 等信息发出第二个GET请求;
4、进行HTTP协议会话,客户端发送报头(请求报头);
5、进入到web服务器上的 Web Server,如 Apache、Tomcat、Node.JS 等服务器;
6、进入部署好的后端应用,如 PHP、Java、JavaScript、Python 等,找到对应的请求处理;
7、处理结束回馈报头,此处如果浏览器访问过,缓存上有对应资源,会与服务器最后修改时间对比,一致则返回304;
8、浏览器开始下载html文档(响应报头,状态码200),同时使用缓存;
9、文档树建立,根据标记请求所需指定MIME类型的文件(比如css、js),同时设置了cookie;
10、页面开始渲染DOM,JS根据DOM API操作DOM,执行事件绑定等,页面显示完成。

上一篇 下一篇

猜你喜欢

热点阅读