先献上报错的代码
Object.defineProperty(this.props.labelInfo, '_desc', {
get: () => {
return this.props.labelInfo.desc
},
set: value => {
this.props.labelInfo.desc = value
this.setProperty('desc')
}
})
反正就是因为业务需求需要对this.props.labelInfo的_desc属性赋值的时候,同步更新其desc属性。代码运行后首次加载就失败,打开控制台看到以下报错信息:
Uncaught (in promise) TypeError: Cannot redefine property: _desc
我开始在网上寻找解决方法,意外发现stackoverflow上已经有解决的方案,虽然不是我的问题所在,但是先把代码贴出来以防后续出现这个情况吧
建议将
object.rotation = object2.rotation
object.rotation = new THREE.Euler( 1, 0, 0 );
写成
object.rotation.copy( object2.rotation );
object.rotation.set( 1, 0, 0 )
其实我的真实问题是,this.props.labelInfo._desc并不存在,所以我需要在定义对象的时候对该字段进行赋值
// 错误代码部分
this.props = {
id: uuid(),
labelInfo
...
}
// 正确代码
this.props = {
id: uuid(),
labelInfo: {
_desc: '',
...labelInfo
},
...
}
在长期写JavaScript的过程中因为JavaScript是弱类型语言,很多时候就算不提前定义也不会影响到代码问题,所以很多时候自己就放松了警惕,同级在操作对象时,就算对象内不存在的属性也没有太多关系,但是这次是对不存在的属性进行属性级别的编辑,总而言之就是自己活该!不过这个报错信息也给我在debug的方向上有很大的误导作用
网友评论