哔哔肾

哔哔肾 查看完整档案

北京编辑中国人民大学  |  财政金融 编辑美团  |  前端 编辑 juejin.im/user/578f2f2279bc44005f045c2a 编辑
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 该用户太懒什么也没留下

个人动态

哔哔肾 回答了问题 · 2018-02-07

js 多态如何理解,最好能有个例子

Rabbit.prototype.toString = function() {
  return `a ${this.type} rabbit`;
};

console.log(String(blackRabbit));
// → a black rabbit

This is a simple instance of a powerful idea. When a piece of code is written to work with objects that have a certain interface—in this case, a toString method—any kind of object that happens to support this interface can be plugged into the code, and it will just work.

This technique is called polymorphism.

调用同一个的方法,却能得到不同的实现和结果,这种现象就是多态。原因就是这个方法的作用就是调用其它方法,或者说这个方法将具体逻辑的定义权交给外部,自己只负责调用,而不考虑实现。

举例:只要部署了 iterator 接口的数据结构,都可以使用 for of 循环。for of 的设计就运用了多态的思想。

参考:《Eloquent JavaScript》chapter 6

关注 12 回答 7

哔哔肾 回答了问题 · 2018-01-16

有没有办法自定义 border 为 dashed 时的虚线间距?

可以的,用渐变

width: 100%;
height: 1px;
background-image: linear-gradient(to right, #ccc 0%, #ccc 50%, transparent 50%);
background-size: 8px 1px;
background-repeat: repeat-x;

关注 6 回答 6

哔哔肾 回答了问题 · 2017-11-07

解决手机端网页有什么下拉加载更多上拉刷新的插件吗?

better-scroll,滴滴前端老大写的

关注 3 回答 2

哔哔肾 回答了问题 · 2017-11-03

学习一门技术如何获得非文档类的帮助?

一、构建一套高质量的信息渠道
比如邮件订阅国外顶尖的技术周刊、关注国内顶尖开发者或团队的博客、专栏、微博、公众号,关注类似极客时间、掘金这种汇聚高质量信息的平台等。当构建起一套足够优秀的渠道来源后,高质量的信息就会源源不断的向你汇聚。

二、读高质量书
通常每个技术领域里最好的书不会超过三本,通过 Google、Amazon、知乎等搜索工具总能找到它们。

三、高质量的输出
包括写博客、答题、系统的知识总结

四、油管视屏
油管上关于技术的东西应有尽有,高质量的内容俯拾皆是

关注 8 回答 6

哔哔肾 回答了问题 · 2017-11-03

JavaScript prototype 中属性赋值为函数后有关 this 的疑惑

首先,“__proto__既然和obj同一层级的,那getSuperValue应该就和testValue是有同样的表现才对呀”,没有这种规则的。

其次,this 要么为 undefined,要么指向一个对象,只有这两种情况。所以不会指向构造函数。

当 this 指向一个对象时,具体指向谁,取决于函数定义和调用的方式,与定义在哪儿无关。

具体有六种情况,看这里吧

关注 5 回答 4

哔哔肾 回答了问题 · 2017-10-28

关于javascript函数和对象的问题?

中文看不懂的地方,建议看英文。《权威指南》虽然是淘宝团队翻译的,但某些地方也不是没有问题

关注 8 回答 4

哔哔肾 回答了问题 · 2017-10-28

React比Vue.js好在哪?

React 与其说是一种框架,倒不如说是一种开发范式。它的核心理念非常简单:

界面/视图就是数据结构的可视化表达
UI = f(data)

而界面/视图由组件组合而来
UI = f1(data) + f2(data) + f3(data) + ...

That's all.

React 扮演的角色就是上述公式中的 f,它完全是函数式的,组件就是函数,给它一个输入(传参),它就返回一个输出(UI)。只有理解了这种开发理念,用 React 才会得心应手。如果只是去学“语法”,仅满足于“能用”,React 确实会显得非常怪异而麻烦。

Vue 的核心理念与 React 其实是一致的,但在 API 的实现上 Vue 对于用户而言更加友好。不像 React,Vue 不会要求用户“Think in Vue”,因为不需要,Vue 是一个渐进式的框架,它并没有大幅改变用户原有的开发方式,它既可以作为插件植入老的 jQuery 项目,也可以作为整个项目的核心框架层。并且 Vue 提供了各种实用的 API,而 React 本身的 API 非常少,许多功能需要自行封装或引用现成的组件。

从能力上讲,两个框架其实差别不大,几乎不存在 React 能干而 Vue 干不了或 Vue 能干而 React 干不了的事,不都是 JS 嘛。不过 React 对于使用者的 JS 能力有一定要求,而 Vue 基本上跟 jQuery 一样前端入门一个月就开始学也没什么问题,以致于知乎上有人开始担心 Vue 大幅削弱了前端的门槛,降低了前端的水准。。。

在实际业务中,我个人更倾向于 Vue,理由就是简单,简单就是好。招人方便,就算不会,很快能上手,写出的代码就算渣,改起来也相对容易。滴滴、饿了么都是 Vue 的深度实践者,百度、京东也有相关实践,阿里直接与 Vue 合作搞了 weex,微信小程序的 API 几乎就是 Vue 的翻版。会用 Vue,同时就会了 weex 和小程序。做后台用
Element UI,简直找不到更好更高效的后台应用解决方案了。Vue 就是新时代的 jQuery,是广大中小型互联网公司的福音。

至于为什么有些团队选择 React,我个人猜测的原因是:首先他们有足够的实力;其次,决策者的精英主义情节让他们下意识的避免容易被认为“简单”的东西;第三,Vue 一开始是个人搞的业余项目,且比 React 晚了两年,还未得到足够的验证,而 React 出身不凡,并且在自家产品里有广泛实践。

总之,我看好 Vue。先学 Vue 再学 React,你会忍不住感慨:真是太麻烦了,太麻烦了。而先学 React,再学 Vue,你会忍不住感慨:真是太方便了,太方便了。

关注 27 回答 17

哔哔肾 回答了问题 · 2017-10-25

这段js代码怎么优化呀?

var txt = ['第二年', '第三年', '第四年', ...];
return txt.slice(0, Math.ceil(month / 12)).join(',')

关注 5 回答 5

哔哔肾 回答了问题 · 2017-10-24

解决如何用一句精炼的话来表述 Python 的闭包?

松本行弘对闭包的解释​​​:闭包和对象都是“数据与过程的结合”,对象是在数据中以方法的形式内含了过程,闭包则是在过程中以环境的形式内含了数据。

关注 10 回答 8

哔哔肾 回答了问题 · 2017-10-23

解决元素惯性抖动?是这么说的吧= =?

参考 animate.css

关注 9 回答 5

哔哔肾 回答了问题 · 2017-10-23

解决Vue.js组件

组件化开发基于这样一种理念:界面就是数据结构的可视化表达
UI = f(data)

而界面就是组件的组合
UI = f1(data) + f2(data) + f3(data) + ...

所以组件就是函数,给定输入,返回输出。React 组件就是函数式的。
viewmodel 就是实现 data=>UI 映射关系的那个 f

关注 8 回答 7

哔哔肾 回答了问题 · 2017-10-23

为什么同样的css用原生js写出来的页面和用react写出来的页面不一样,而且移动端的宽度怎么会到980?

这个问题的本质是 px 单位的问题,参考《1px 究竟是多大》

关注 3 回答 2

哔哔肾 回答了问题 · 2017-10-23

移动端如何实现输入框放在弹起的软键盘上?

移动端别用 fixed 定位,在 IOS 上问题很多。用 absolute,相对视窗定位,宽高 100%

关注 7 回答 3

哔哔肾 回答了问题 · 2017-10-23

解决移动端h5开发如何做到和ui图纸一致的网页

  1. 让 UI 给出明确的标注,各种色值、尺寸、粗细。当然,UI 很可能不干。
  2. 完全一致是不可能的,因为移动端屏幕尺寸那么多,浏览器可视区域的尺寸也各不相同,而设计图就只画一张固定尺寸的图,怎么一致?许多 UI 根本不考虑适配的。而且我认为 PS 并不是最好的设计 webapp 的工具,原型工具才是,可以搜一下最近刚出的 invison studio。当然,许多 UI 被工具束缚,陷入路径依赖和舒适区,不愿意学习新工具,在这样的团队里,前端确实会难受一些。
  3. 字体就没法一致,安卓和苹果根本没有微软雅黑...很多 UI 其实对移动端开发的相关知识并不关注,这个需要多沟通。
  4. 1080px 宽的设计稿,这个确实不太符合通常的开发规范,你说设计稿上 200px 的宽度,你在 CSS 里该写多少 px?
  5. 移动端适配两大利器:rem、flex,基本不存在兼容问题,可以放心用(flex 需要用 autoprefixer 补全)
  6. 移动端适配头疼问题:1px 的细线怎么画。直接用 border: 1px solid #eee 这种肯定是会被 UI 怼的。参考方案:
.hair-top:before,
.hair-left:before,
.hair-bottom:after,
.hair-right:after {
  content: '';
  display: block;
  position: absolute;
  background-color: #ddd;
}
.hair-top:before {
  width: 100%; height: 1px;
  top: 0; left: 0;
  transform: scaleY(.5);
}
.hair-left:before {
  height: 100%; width: 1px;
  top: 0; left: 0;
  transform: scaleX(.5);
}
.hair-bottom:after {
  width: 100%; height: 1px;
  bottom: 0; left: 0;
  transform: scaleY(.5);
}
.hair-right:after {
  height: 100%; width: 1px;
  top: 0; right: 0;
  transform: scaleX(.5);
}
  1. 不推荐淘宝 flexible 方案里动态设置 viewport 的做法。理由有三:
  • 几乎所有长度单位都需要换算为 rem,很多时候都没必要
  • 设置字体大小比较麻烦
  • 第三方组件不一定采用这套适配方案,可能存在不兼容的情况

关注 9 回答 7

哔哔肾 回答了问题 · 2017-10-23

解决vue的click事件后加不加括号的问题

应该是 Vue 对函数调用表达式额外用了一个函数做了层包装。
加与不加括号的区别在于事件对象参数 event 的处理。不加括号时,函数第一个参数为 event,加了括号后,需要手动传入 $event 才能获得事件对象

关注 4 回答 3

哔哔肾 回答了问题 · 2017-10-23

求一个vue.js中的关于directives的例子

exactly what you want: http://www.cnblogs.com/kidney...

关注 3 回答 2

哔哔肾 回答了问题 · 2017-10-23

解决求解怎么理解二叉树

首先你需要知道二叉树为什么会存在,它是用来解决什么问题的。它主要是用于解决如何在大量的键值对中查找数据的问题,解决方法有数组的二分法查找,也有链表,你需要了解这两种方法的原理和优缺点,然后就能明白为什么会出现二叉树,因为二叉树就是上述两者的合体升级版。参考书《算法》Robert Sedgewick

关注 4 回答 1

哔哔肾 回答了问题 · 2017-10-21

js 怎么设计一个好的组件?

我正在做一个组件库,探讨组件化开发究竟该怎么做才好,也是我个人开发经验的一个总结。里面有些理念来自豆瓣的张克军,他有一个讲组件化开发的 Slides,可惜下载链接过期失效了。只能帖一张我截的图:
图片描述

参考:https://bison1994.github.io/k...
源码:https://github.com/bison1994/vui

关注 3 回答 2

哔哔肾 回答了问题 · 2017-10-21

解决关于css3 3D的问题

正好我以前写过。
效果参考:https://bison1994.github.io/k...
代码参考:https://github.com/bison1994/...

关注 4 回答 3

哔哔肾 回答了问题 · 2017-10-21

解决vue获取input框中的files属性

不能用文本框获取 value 的方式获取文件信息

<input type="file" @change="getFile">

methods: {
  getFile (e) {
    var files = e.target.files
  }
}

关注 6 回答 4