HearLing
HearLing
**水平居中** - 行内元素 ``` .parent { text-align: center; } ``` - 块级元素 ``` .son { margin: 0 auto; } ``` - flex布局 ``` .parent { display: flex; justify-content: center; }...
 构造函数的prototype指向实例原型,就是实例化对象的_proto_,

在技术中内部函数总是可以访问其外部函数中声明的变量,当一个外部函数返回一个内部函数后,即使该外部函数已经执行结束了,但是内部函数引用外部函数的变量依然保存在内存中,我们就把这些变量的集合称为闭包。 应用:1. 采用函数引用方式的setTimeout调用2. 小范围代替全局变量3. 访问私有变量的特权方法
CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距margin,边框border,填充padding,和实际内容content。 有两种盒模型,标准盒模型和怪异盒模型,区别在于,元素的宽高大小表现为content的大小,而怪异盒模型则表现为content + padding + border的大小(背景会延伸到边框的外沿)
let 跟 var 最明显的区别是, let 声明的范围是块作用域,而 var 声明的范围是函数作用域。 const 的行为与 let 基本相同,唯一一个重要的区别是用它声明变量时必须同时初始化变量,且尝试修改 const 声明的变量会导致运行时错误。 const定义的对象可以修改,因为对象是引用数据类型二不是基本数据类型,其值会被存放在堆区中,其引用地址保存在栈区,修改保存在堆里的对象属性不会改变栈内地址,但如果是对对象重新附地址改变了栈内内存地址就会包错 简单来说就是const声明的只是栈区内容不变,基本数据类型保存在栈区中不可改变,引用数据类型得引用地址不可改变;
```javascript // 普通的add函数 function add(x, y) { return x + y } // Currying后 function curryingAdd(x) { return function (y) { return x + y } } add(1, 2) //...
实际上就是把add函数的x,y两个参数变成了先用一个函数接收x然后返回一个函数去处理y参数。 就是只传递给函数**一部分参数来调用**它,让它**返回一个函数去处理剩下的参数**。 用处: 1. 参数复用 2. 提前确认 3. 延迟运行
``` function curry(fn, args = []) { console.log([...arguments]) // 空\1\1,2 return function () { console.log([...arguments])//1\2\3 console.log([...args])//空\1\1,2 let rest = [...args, ...arguments] if (rest.length < fn.length) { return curry.call(this, fn, rest)...
**垂直水平居中** - 行内元素 ``` .parent { height: 高度; text-align: center; } .son { line-height: 高度; } ``` - flex布局 ``` .parent { display: flex; align-items: center; justify-content: center; } //或者设置父flex...