前言
我在边学 Vue 边做 轱辘UI 的项目中,写 row 组件 的测试用例时碰到了一个问题。
测试用例需要渲染两个组件,它们是父子关系,但测试下来子组件并没有拿到父组件的 gutter 属性,发现原来是因为 Vue 异步的渲染。
之后通过 setTimeout 和 done() 解决了这一问题,之后便有了这篇博客。
分析
Vue到底是怎样渲染组件到页面的?看例子来分析吧
继承是面向对象思想中的重要概念, JavaScript 在ES 6 中正式引入了继承的概念。
下面介绍一下继承的概念,以及在 ES5 和 ES6 中写继承的方法。
维基百科:
继承( inheritance)是面向对象软件技术当中的一个概念。如果一个类别B“继承自”另一个类别A,就把这个B称为“A的子类”,而把A称为“B的父类别”也可以称“A是B的超类”。继承可以使得子类具有父类别的各种属性和方法,而不需要再次编写相同的代码。
所以继承是类和类之间的关系,然而JavaScript起初根本没有类的概念,那么为什么也有继承呢?
要了解JS的继承,就得先了解原型链。该部分可见我的另一篇博客
简单来说,就是每一个对象都有一个__proto__
属性,指向该对象的原型prototype
,原型的层层指向就形成了一个类似链表的结构(实际上原型的指向是多对一的,所以说成“树”的结构其实更准确一点)称之为原型链。
let与const都是只在声明所在的块级作用域内有效。
1 | !function(){}.call() //我们不在乎这个匿名函数的返回值,所以加个 ! 取反没关系 |