高端前端工程师必备知识点

2019-04-22  本文已影响0人  沐雨芝录

一、css的position属性有哪些取值,它们的行为是什么?

1)取值
2)行为:
3)为何会产生这些行为,上面各种相对物都称为包含块(containing block)。
4) position跟display、margin collapse、overflow、float这些特性相互叠加后的行为。

先看display重置规则:

设置值 转换值
inline-table table
inline, run-in, table-row-group, table-column, table-column-group, table-header-group, table-footer-group, table-row, table-cell, table-caption, inline-block block
其他 同设定值

参考文献:http://www.w3help.org/zh-cn/kb/https://www.cnblogs.com/jackyWHJ/p/3756087.html


二、为什么尽量别用setInterval?

const f = () => {
  if (true) {
      setTimeout(f, 5000)
  }
}          
setTimeout(f(), 5000);

webpack打包添加版本号
https://segmentfault.com/q/1010000004651295


三、必考原型继承相关内容?

1)\color{#4A33EE}{new一个实例道理经历了什么?}
我们以 var p = new Person 为例来说:

var obj = {}
obj.__proto__ = Person.prototype
Person.call(obj)
var p = obj

简单来说:创建一个空对象obj,将Person的prototype属性赋予obj,通过call将Person的this指向obj。

2)\color{#4A33EE}{object.create原理?}

Object.create =  function (obj) {
    var F = function () {};
    F.prototype = obj;
    return new F();
};

简单来说:就是建一个空函数F,F.prototype=obj,然后返回F的实例。

这样的好处就是可防止多次调用父的实例,经典场景:寄生组合式继承。

3)\color{#4A33EE}{为何方法需要用prototype扩展?}
看如下例子:

// 第一种
function Person() {
  this.name=name;
  this.getName=function() {
    console.log(this.name)
  }
}

// 第二种
function Person() {
  this.name=name;
}
Person.prototype.getName=function() {
    console.log(this.name)
  }

第二种的好处就是,每一次调用实例new Person(),都不会触发getName方法,只有需要调用才触发,提升了性能;而第一种调用实例就会触发一次。


未完待续...

上一篇 下一篇

猜你喜欢

热点阅读