码迷,mamicode.com
首页 > 其他好文 > 详细

入前端以来,易混肴的前端知识,及一点想法。

时间:2019-07-03 16:51:01      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:特殊   let   int   console   替代   舞台   es6   log   color   

前言:感觉任何行业开始都离不开一个借鉴,随着时间的积累,变得熟能生巧。能分辨出利于自己的,或是好用的。这篇文章算是一个积累或者在这个行业本人的部分映射/走向,随缘更新,大部分都是自己常用,但可能掉坑的,督促自己背下来。

零.趋势,前端顶峰,安全

  2019的主体:

  GraphQL
  TypeScript

  React

  flutter

一. CSS

  1. x:nth-of-type(n) 获取父元素下,的第 n 个 x 元素,tips:n 从 0 开始。(注意我的断句!)

  2.x:nth-child(n)     x的父元素下,第 n 个元素,假如刚好是 x,则有效,tips:n 从 1 开始。

  3.x:last-child  x的父元素下,最后一个子元素,恰好为 x

 

  1. overflow-y:auto 对于 overflow-y:scroll ,同样是对容器上下内容的裁剪,auto 比 scroll 更智能,超出显示滚动条,否则隐藏

 

  1.transition 过渡

  2.transform 变换

  3.animation 动画

  tips:参考 https://segmentfault.com/a/1190000004460780

二:Promise

  1.Promise.all 的使用注意

  

Promise.all(arr).then(res => {
    // 注意这里 item => 不加括号等于  {return JSON.parse(item.data).result )}        切记箭头函数与Promise的组合使用,一定要有return
      return res.map(item => JSON.parse(item.data).result )
    }).then(data => {
      console.log(data)
    })

 

三:ES6整理

  1.函数默认参数  function fn (num = 200) { console.log(num) };  fn() 或 fn(300);

  2.async await 可避免回调地狱。async function 大于 Promise,当然在多个 await 之间没有关联时, async await 假若出错将会中断执行,所以建议加上 try { 多条await语句位置 } catch (e) {};高端:let [a, b, c] = await Promise.all([fn1(), fn2(), fn3()])

四:this

const obj = {
    a: function() { console.log(this) },
    b: {
        c: function() {console.log(this)}
    }
}
obj.a()  // 打出的是obj对象, 相当于obj.a.call(obj)
obj.b.c() //打出的是obj.b对象, 相当于obj.b.c.call(obj.b)

  1. 概念:this是函数用call方法调用时传递的第一个参数,而且它还可以手动更改,只有在调用的时候才能确定this的值。

/* 
简单总结一下:函数完整的调用方法是使用call方法,包括test.call(context, name)和obj.greet.call(context,name),这里的context就是函数调用时的上下文,也就是this,只不过这个this是可以通过call方法来修改的;构造函数稍微特殊一点,它的this直接指向new之后返回的对象;window.setTimeout()和window.setInterval()默认的是this是window对象。
*/

  2.箭头函数默认绑定(继承)外层 this,并且无法使用call修改,引用MDN:箭头函数不会创建自己的this,它只会从自己的作用域链的上一层继承this。

  3.修改this默认为window的setTimeout

const obj = {
    a: function() {
        console.log(this)
        window.setTimeout(() => { 
            console.log(this) 
        }, 1000)
    }
}
obj.a.call(obj)  //第一个this是obj对象,第二个this还是obj对象

 五:关于 JQuery 完成使命,即将退出舞台

  1.querySelector,querySelectorAll 快速获取DOM节点

  2.classList 代替 addClass,removeClass

  3.Animate.css

  4.原生Fetch API(IE无法使用,需要配合Polyfill)及 axios 代替jq封装的ajax

 六、超出隐藏

  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;/*最后添加省略号*/

   去浮动

.clearfix:after {
    content: "";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden;
    overflow: hidden;
}

 七、居中

.el {
    display: flex;
    align-items: center;
    justify-content: center;
}

 八:const 变量的内部状态是可修改的

 九:文字不可选

.noselect {
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

 十:回调函数带参将失去 this 指向

// 若参数 cb 改为 cb(),则失去 this 指向
fn(param, cb) {
    cb()
}
cb () {
    console.log(this)  
}

 十一:push 返回的是长度,所以请严格按照顺序书写,另外参照第【十八】的不可变性,我们可以使用 concat 代替 push 创建数组的副本

let arr = [3]
arr.push(4) // 2
console.log(arr) // [3, 2]

 十二:find 与 filter 的区别,两个方法的原数组都不变,find 查出的是第一个符合的对象,不是数组。

 十三:box-sizing: border-box 只需设置 width 与 height,line-height,不需要设置padding。

 十四:export 导出

1.export default { xxx } // 一个 js 文件中只能一个
2.export const obj = [ xxx ] // 一个 js 文件中可以多个,等同于3
3.const obj = [ xxx ]
    export { obj }
    export { obj2 }
    ...
 import * as common from ‘./common.js‘ // webpack中加载依赖,common.obj
 import {obj, obj2} from ‘./common.js‘

 十五:forEach 及 for...of 的比较

// forEach进行数组遍历
// 缺点:不能使用breack语句中断循环,不能使用return语句返回到外层函数

// for...in 辣鸡,用来遍历对象属性,且遍历出来的属性还是字符串

// for...of 无敌,规避forEach的缺点,额外支持类数组【DOM】,字符串。
// 缺点:数组的遍历器接口只返回具有数字索引的属性,假如 myArray.foo = ‘foo‘,则无法遍历出来。

for (var value of myArray) {
  console.log(value);
}
// 遍历键名
for (let index of [‘a‘, ‘b‘].keys()) {
  console.log(index);
}
// 遍历键值
for (let elem of [‘a‘, ‘b‘].values()) {
  console.log(elem);
}
// 遍历键值对
for (let [index, elem] of [‘a‘, ‘b‘].entries()) {
  console.log(index, elem);
}

 十六:apply、call、bind 分析与扩展运算符的替代 (...)

 十七:js数组方法forEach、map、filter、reduce、every、some总结

map() // 返回一个新的Array,每个元素为调用func的结果 
filter() // 返回一个符合func条件的元素数组 
some() // 返回一个boolean,判断是否有元素是否符合func条件 
every() //返回一个boolean,判断每个元素是否符合func条件 
forEach() //没有返回值,只是针对每个元素调用func 
reduce() //有返回值,重点是计算数组,返回一个值

1、map速度比forEach快 
2、map会返回一个新数组,不对原数组产生影响,foreach不会产生新数组, 
3、map因为返回数组所以可以链式操作,forEach不能

 

十八:不可变性,即创建一个新的副本有利于历史朔源

1.let obj3 = Object.assign({}, obj1, obj2)
2.let obj3 = { ...obj1, obj2 }
3.Array.slice() // 能创建该数组的一个副本

 

入前端以来,易混肴的前端知识,及一点想法。

标签:特殊   let   int   console   替代   舞台   es6   log   color   

原文地址:https://www.cnblogs.com/yuqlblog/p/11126947.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!