小知识点集汇三

小知识点集汇三

JavaScript

  • 所有对象都有 __proto__ 属性,都指向创造对象的函数对象的 prototype
  • 上传文件要使用 formdata 包装。
  • Promise.prototype.catch 方法是 .then(null, rejection) 的别名。
  • 同一个 EventTarget 注册了多个相同的 EventListener,那么重复的实例会被抛弃。所以这么做不会使得 EventListener 被调用两次,也不需要用 removeEventListener 手动清除多余的EventListener,因为重复的都被自动抛弃了。
  • 当使用 addEventListener() 为一个元素注册事件的时候,句柄里的 this 值是该元素的引用。其与传递给句柄的 event 参数的 currentTarget 属性的值一样,而 target 是直接接受事件的子元素。
  • scrollIntoView() 使 div 底部滚动到视窗。
  • 使用 const 的对象和数组的内容是可以被修改的,但数据结构不可变。
  • 在 webpack 里,所有的文件都是模块。loader 的作用就是把文件转换成 webpack 可以识别的模块。
  • 关于事件循环,执行下一个 task 之前总会清空 microtask。
  • npm 新旧版本覆盖可能会造成迷之问题,这个时候可以试试 node_module 整个删掉重装。
  • *、/ 和 - 操作符都是数字运算专用的。当这些运算符与字符串一起使用时,会强制转换字符串为数字类型的值。
  • document.title 可以直接修改当前 html的标题。
  • document.body.contentEditable=truedocument.designMode='ON' 可编辑的网页
  • document.lastModified // 查看网页最后更新时间
  • 利用对象浅拷贝修改对象,指向同一对象的两个变量修改对象的效果一样。深度克隆 采用 _.deepClone(obj)JSON.parse(JSON.string(obj))
  • 脑洞题:1 和 2 只用一次的情况下怎么得到 4 答案:1<<2。
  • 连等赋值从右到左。
  • compositionstart 事件触发于一段文字的输入之前(类似于 keydown 事件,但是该事件仅在若干可见字符的输入之前,而这些可见字符的输入可能需要一连串的键盘操作、语音识别或者点击输入法的备选词)。
  • void 0(void后面加任何东西)用于生成一个绝对的 undefined(不会被重定义),但跟函数会有副作用
  • 注意 localStorage 保存的只能是字符串,所以是没有 null 的。
  • 坑一个
    typeof [] === 'object' // true
    typeof null === 'object' // true
    
  • import 同步,require异步(待补充)
  • new() 做了些什么?
    var obj = new Base();
    var obj  = {};
    obj.__proto__ = Base.prototype;
    Base.call(obj);
    
  • stage 0 到 4 的含义:

    stage 0 is "i've got a crazy idea",
    stage 1 is "this idea might not be stupid",
    stage 2 is "let's use polyfills and transpilers to play with it",
    stage 3 is "let's let browsers implement it and see how it goes",
    stage 4 is "now it's javascript".

  • Object.getOwnPropertyNames(obj).length === 0 判断 obj 是不是空对象。
  • getBoundingClientRect() 用于获取元素宽高以及距离页面边框距离,十分方便。
  • && 的使用场景:左边为真继续执行右边,如 isDog && bark()
  • || 的使用场景:左边为假继续执行右边,如 let i = value || defalutValue

Vue.js

  • v-model 会自动 bind 一个值,其变量名为 value。
  • 多个特性的元素应该分多行撰写,每个特性一行。以下为 vscode 里 vetur 的设置:
    "vetur.format.defaultFormatterOptions": {
        "js-beautify-html": {
          "wrap_attributes": "force" 
        }
      }
    
  • 组件 destroy 时触发自定义指令的 unbind,destory 的时机:diff 之后的 patch,如 v-if,v-for(key不同时,先销毁原来的,再挂载新的(推测))
  • 自定义组件 v-model watch 自动匹配(存疑
  • 组件的 data 属性要用函数返回的原因:创建实例时如果 data 是一个对象的话,所有实例都会引用同一个对象,而对象返回不会有此问题。在浏览器中可以这么做是因为根实例只有一个。
  • .vue 文件中使用 /deep/ 覆盖子组件 css demo
  • keep-alive 的钩子函数 activated() deactivated() 以及
    keep-alive 最佳实践
<keep-alive>
    <router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>

GitHub

  • 从 commit 关闭 issues 的方法:commit 信息写 Fixes #33,其他关键字还有 close closes closed fix fixes fixed resolve resolves resolved
  • git reset --soft HEAD^ 回退一次 commit

CSS

  • div 的默认宽度是父元素宽的 100%
  • 逐帧动画 animation: animate-name 3s steps(每次循环的帧数) infinite;
    @keyframes animate-name{
        from{
        <!--原位-->
            background-position: 0 0; 
        }
        to{
        <!--最后一帧-->
            background-position: -1540px 0 ;
        }
    }
    
  • "Break out" of a parent's containing width to take the full screen of a page w/this nice utility class:
    .full-width {
      width: 100vw;
      position: relative;
      left: 50%;
      right: 50%;
      margin-left: -50vw;
      margin-right: -50vw;
    }
    
  • 行内元素与下一个元素中间有空格(正常排版),会引起一些诡异的缝隙,常见的例如元素之间有间隔,或看起来空了一行(像加了padding)
  • pre 标签设置自动换行 white-space: pre-wrap;
  • 隐藏一个元素,同时让这个元素的宽度可获取:设置 overflow: hidden 可以根据元素高度裁剪视区,设置 height: 0; overflow: hidden 虽然文档流中占用了位置,由于高度为 0,最终表现特征达到了我们期望的 display: none。此时该元素 clientHeightoffsetHeight 为 0,但是 scrollHeight 是有值的。scrollHeight 是一个元素没有滚动条时的所有内容高度,当一个元素没有滚动条时 scrollHeight === offsetHeight
  • 当 Render Tree 中部分或全部元素的尺寸、结构、或某些属性发生改变时,浏览器重新渲染部分或全部文档的过程称为回流。
  • 当页面中元素样式的改变并不影响它在文档流中的位置时(例如:color、background-color、visibility等),浏览器会将新样式赋予给元素并重新绘制它,这个过程称为重绘。
  • 回流必将引起重绘,重绘不一定会引起回流。
  • 移动端优化常用 CSS 属性:
    user-select: none; // 禁止文字被选中
    outline:none; // 去除点击外边框,点击无轮廓
    -webkit-touch-callout: none; // 长按链接不弹出菜单
    -webkit-tap-highlight-color: rgba(0,0,0,0); // 去除点击高亮
    
  • @keyframes 的属性要前后对应,否则不形成动画
  • img 元素图像自适应居中,与 background-size 效果一样
    object-fit: cover; 
    
  • <img /> 标签千万记得写宽高,不然会花式塌陷
  • flex-grow 所在元素如果未定宽度的话,宽度会被子元素撑开
  • 一个英文单词默认不换行,无论多长,所以要设置 word break
  • 多行文字居中
    .mulit_line{ 
        border:1px dashed #cccccc; 
        padding-left:5px;
    }
    .mulit_line span{ 
        display:inline-block; 
        line-height:14px; 
        vertical-align:middle;
    }
    
  • safari 中控制惯性滚动 -webkit-overflow-scroll
  • 滚动条样式可能使滚动条强制显示(未确定)
  • flex 布局不换行加 flex-shrink: 0; 实现 div 不压缩无限并排,可以用于 swiper 等场景。
  • 巧用猫头鹰选择器 * + *
  • float 自带 display: block
  • 鼠标禁用 .disabled { pointer-events: none; }
  • 注意 :last-child 与 :last-of-type 的区别
  • ::after 表示法是在 CSS3 中引入的,:: 符号是用来区分伪类和伪元素的。支持CSS3的浏览器同时也都支持 CSS2 中引入的表示法 :after。
  • 父元素如果存在 transform 属性,子元素的 position: fixed 属性无效
  • less 中的 calc 问题:height: calc(~"100% - 50px");
  • vh 在部分浏览器中包含地址栏部分,小心使用。

VSCode

  • alt + shift + 鼠标点击 纵向选择
  • vetur 分号问题: 安装 prettier,然后配置 "prettier.singleQuote":true,"prettier.semi": false
  • 可以使用插件 document this 方便写注释
  • html tag 属性分行 wrap_attributes:force
  • 选定变量后按 F12 找到定义位置

其他

  • 魔法隧道用 webpack 代理会 502
  • 在组件化编程中,悼念被同名组件浪费了几个钟的 debug 时间[蜡烛]
  • 局域网连不通的话,先试试,开共享,关闭防火墙
  • 局域网连不通的话,还可以试试,在 webpack.config.js 文件的 devServer 里加上host:'0.0.0.0'
  • iOS 的回弹效果,动的是 body 部分,html 是不动的
  • 学习一个语言之前先看规范
  • safari 的 formdata 只支持 append,其他方法需要 polyfill
  • rc 的意思是 run commands
  • 导航栏高度 88px,标签栏高度 98px(iphone5和6常用)
  • 关于 HTTP 304 Not Modified,简单来说,请求内容没有发生变化的时候,根据设置,服务器可能直接取缓存返回
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,589评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,615评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,933评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,976评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,999评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,775评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,474评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,359评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,854评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,007评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,146评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,826评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,484评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,029评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,153评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,420评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,107评论 2 356

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,490评论 1 45
  • HTML 5 HTML5概述 因特网上的信息是以网页的形式展示给用户的,因此网页是网络信息传递的载体。网页文件是用...
    阿啊阿吖丁阅读 3,899评论 0 0
  • 爱情到底是什么样子? 我不知道, 所以我一直在寻找 属于我的爱情 我的爱情的样子
    小小鱼kl阅读 115评论 0 0
  • 在移动端应用中,很多情况下我们需要频繁与表格、列表这类的UI组件打交道,由于移动端设备的屏幕较小,所以在iOS上组...
    一梦换须臾_阅读 1,650评论 0 4
  • 我问要不要做男模安利的时候你们就是点赞啊也没说要不要...我就默认你们都要了:) 男模圈真的是超大der,每年都有...
    Sahores阅读 2,123评论 1 3