前端知识梳理

208 阅读2分钟

css盒模型

box-sizing:content-box; //标准模型

box-sizing:border-box; //盒模型

获取dom模型宽高

dom.style.width/height //只能取到内链样式表

window.getComputedStyle(dom).width/height

dom.getBoundingClientRect().width/heigh

BFC 块级格式化上下文--边距重叠解决方案

垂直方向边距重叠,区域不会与服务区域重叠,独立区域,计算高度时浮动元素

创建BFC:

  • float不为none
  • position:不是static或者relative
  • display:fixed inline-box
  • overflow 创建BFC还有,清除浮动

DOM事件

  • DOM事件级别
  • DOM事件模型 捕获和冒泡
  • DOM事件流
  • DOM事件捕获的具体流程
  • Event对象的常见应用
  • 自定义事件

dom2    element.addEventListener('click',function(){},false) //默认:false冒泡阶段,ture捕获阶段
dom3    element.addEventListener('keyup',functino(){})

事件流:

捕获->目标元素->window对象
window->document->html->body
html----------document.documentElement

event常见应用

event.preventDefault()
event.stopPropagation()
event.stopImmediatePropagation();
event.currentTarget()               //事件代理
event.target()                      //具体元素

自定义事件

var eve = new Event('custom')        //new Custome可以加入数据
ev.addEventListener('custome',function(){
    console.log('custome');
});
ev.dispatchEvent(eve)


原型链

创建原型对象有几种方法

var o1 = {name:'o1'}                //默认原型链指向Object
var o11= new Object({name:'o11'})

var M= function(name){
    this.name = name
}
var o2 = new M('o2')                //原型对象指向构造函数 M

var P={name:'o3'}
var o3 = Object.create(P)           //通过原型链


M.protptype.constructor === M //true

o3.__proto__ === M.prototype //true

M.__proto__ ===Fucntion.prototype      //true函数也是个对象


instanceof 实例对象__proto__ 是不是在原型对象(构造函数prototype)链上

constructor 比用instanceof更严谨


new运算符

  1. 一个新对象被创建。 它继承自foo.prototype
  2. 构造函数foo被执行。执行的时候,相应的传参会被传入,同时上下文this会被指定为这个新实例new foo等同于new foo(),只能用在不传递任何参数的情况。
  3. 如果构造函数返回了一个“对象”, 这个对象会取代整个new 出来的结果。如果构造函数没有返回对象,那么new出来的结果为步骤一创建的对象

var new2 = function(func){
    var o = Object.create(function.prototype)
    var k = func.call(o)
    if(typeof k === 'object'){
        return k
    }else{
        return o
}

类与实例


类与继承