vue学习渲染函数遇到以下代码
render: function (createElement) {
return createElement('div',
Array.apply(null, { length: 20 }).map(function () {
return createElement('p', 'hi')
})
)
}
此段代码可以重复渲染20个段落。
核心知识点
1.function.apply(obj,arr)
第一个参数obj:
function的this指向obj,null则指向全局
第二个参数arr:
是一个数组,作为参数传给function,ES5开始,这个参数可以是一个类数组对象,就是包含一个length属性的对象{length:2}
2. Array构造器接受多个参数并返回构造好的数组,单个数字除外
3. map方法遍历数组是需要每一位都被初始化后的数组。
总结
apply方法把第二个类数组对象转化为长度为20的数组
相当于Array(20)但是每一位都是空的,
利用apply的特性可以把这个数组拆分成多个参数传给Array的构造函数,
最后转化为长度为20并且每一位都被初始化为undefined的对象,这样可以被map方法遍历,依次创建出带段落标签并返回,
实现了用渲染函数创建段落了20个完全相同的段落