2021SC@SDUSC
概述
本周开始分析amis
的helper工具库代码。
本文件中的各种函数被其他文件大量调用,有很多基础功能的实现。
我首先学习的是工具文件中对对象操作的用法。
createObject
自定义创建对象函数:以 superProps 为原型,包括 props 的自身所有属性以及自定义 properties 属性
export function createObject(
superProps?: {
[propName: string]: any},
props?: {
[propName: string]: any},
properties?: any
): object {
// 含有 superProps 参数且可操作
// Object.isFrozen() -> 判断对象是否被冻结
if (superProps && Object.isFrozen(superProps)) {
superProps = cloneObject(superProps); // 克隆对象,防止对原对象的污染
}
/* properties 结构
{
'property1': {
value: true,
writable: true
},
'property2': {
value: 'Hello',
writable: false
}
// etc. etc.
}
*/
const obj = superProps
? Object.create(superProps