1.js对象的一些方法
- 冻结对象
- Object.freeze(obj)
- 检查对象是否被冻结Object.isFrozen(obj)
- 冻结的对象不能修改删除新增属性,不能做劫持definepropertiy
- 1
- 密封对象
- Object.seal(obj)
- Object.isSeal(obj)检查对象是否被密封
- 密封对象不能新增删除劫持属性,但是可以修改属性
- 扩展对象
- Object.preventExtensions(obj)把对象变成不可扩展
- Object.isExtension(obj)检查对象是否可扩展
- 不能新增属性,可以删除修改劫持属性
被冻结的对象,即是不可扩展也是密封的。
被密封的对象,也是不可扩展的对象。
2.props是冻结的对象
不可修改新增删除劫持属性。
props的使用提高了组件的复用性。
props可以进行规则校验:
1.给传过来的props设置默认值
Compo.defaultProps={
title:123 //默认值
}
2.设置数据格式、是否必传……需要用到依赖prop-type
Compo.propTypes={
//类型是字符串且必传
title:PropTypes.string.isRequired,
//类型是数据,非必传
x:PropTypes.number
//多种类型中的一个
y:Proptypes.oneOfType({
PropTypes.number,
PropTypes.string
})
}
传递来的属性都会经过属性校验,不管失败或成功都会赋值给props,但是不符合控制台会报错。