JavaScript基础知识5点(2018.12.29)

2019-01-02  本文已影响0人  小进进不将就

1、为什么 CSS 要放在头部,JS 要放在尾部?
因为现代浏览器为了更好的用户体验,它的渲染引擎是边解析 HTML,边渲染页面— —即会渲染不完整的 dom 树和 cssom,尽快减少白屏时间。

如果将 <script> 标签放在头部,会阻塞解析 dom,这样第一次渲染就会延后,所以将 js 放在尾部;
而 CSS 放在头部,是因为 js 文件会查询 CSS 的样式,所以要先加载 CSS 文件,再加载 js 。

2、跨域问题产生的原因?如何解决跨域问题?
(1)原因是浏览器的同源策略,即协议、域名和端口必须完全相同才能发起请求。
(2)用 express 解决(本质是 cores)

//解决跨域问题,不能写在app.use(bodyParser.json());上面
app.all('*',function (req, res, next) {
  //写上跨域
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild');
    res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS');
  //为上传图片新增
    res.header("Content-Type", "application/json;charset=utf-8");
  //浏览器为安全起见会提交两次
    if (req.method == 'OPTIONS') {
        //让options请求快速返回/
        res.sendStatus(200);
    }
    else {
      //往下寻找接口
        next();
    }
});

3、为什么主流用 cores 而不是 jsonp ?
(1)jsonp 只能用于获取资源( get 请求),而 cores 支持所有类型的 HTTP 请求。
(2)jsonp 的错误机制没有 cores (onerror)完善。
(3)jsonp 只发送次请求,cores 面对复杂请求,为安全起见会请求次。
(4)jsonp 对浏览器支持性好,cores 不支持 IE10 以下的版本。

4、有一个类如下:

function Person(name) {
    this.name = name
}
let p = new Person('Tom');

(1)p._ _proto_ _ 等于什么?

Person.prototype

(2)Person._ _proto_ _ 等于什么?

Function.prototype

实例的 _ proto _ 属性(原型)等于其构造函数的 prototype 属性。

5、原型链,如题:

    let foo={}
    let F=function () { }

    Object.prototype.a='value a'
    Function.prototype.b='value b'

    console.log(foo.a) //value a
    console.log(foo.b) //undefined

    console.log(F.a) //value a
    console.log(F.b) //value b

思路:
(1)foo.a,因为 foo 本身没有属性,所以去 foo 的原型上找,foo._ proto _ = Object.prototype ,而 Object.prototype.a = 'value a' ,所以 foo.a = 'value a'
(2)而 Object.prototype.b 未定义,所以 foo.b 为 undefined
(3)F.a,同理,F._ proto _ = Function.prototype ,Function.prototype 上没有,所以去 Function.prototype 的原型上找,Function.prototype._ proto _ = Object.prototype,而 Object.prototype.a = 'value a' ,所以 F.a = 'value a'
(4)同理,所以 F.b = 'value b'


(完)

上一篇 下一篇

猜你喜欢

热点阅读