javascript中对象冻结内的引用常量
在selectors.page2Data.\u 3txtFamilyName中分配myData.firstName的正确方法是什么: 有可能吗javascript中对象冻结内的引用常量,javascript,node.js,ecmascript-6,Javascript,Node.js,Ecmascript 6,在selectors.page2Data.\u 3txtFamilyName中分配myData.firstName的正确方法是什么: 有可能吗 module.exports = Object.freeze({ myData: { firstName : 'first', lastName : 'last ', streetNum : 'number', }, selectors:{ page2Data:{ _3txtFamilyName: fun
module.exports = Object.freeze({
myData: {
firstName : 'first',
lastName : 'last ',
streetNum : 'number',
},
selectors:{
page2Data:{
_3txtFamilyName: function(){ return myData.firstName},
_4txtgivenName: function(){this.myData.lastName},
_5txtAddressStreetNo: function(){this.myData.streetNum} ,
}
}
});
简单的方法是将整个对象分配给一个变量,并根据需要在内部使用该变量。然后导出该变量
const obj=Object.freeze({
我的数据:{
名字:'第一',
},
选择器:{
第2页数据:{
_3txtFamilyName:函数(){
返回obj.myData.firstName
}
}
}
})
//module.exports=obj
console.log(obj.selectors.page2Data.\u 3txtFamilyName())
此对象的组织结构使得使用这些函数非常不方便<代码>这些函数中的此将引用page2Data
对象,而不是主父对象。因此,使用this.myData
将在这些函数中返回未定义
如果您绝对无法将其更改为更方便的对象,则可以使用call()
调用函数并传入外部对象。但这是一种相当丑陋的方式:
让e=Object.freeze({
我的数据:{
名字:'第一',
},
选择器:{
第2页数据:{
_3txtFamilyName:函数(){
this.myData.firstName=“标记”
},
}
}
});
e、 selectors.page2Data.\u 3txtFamilyName.call(e)//为此传递显式值
console.log(e.myData)
在当前上下文中执行此操作的最佳方法是执行以下操作:
module.exports = Object.freeze({
myData: {
firstName : 'first',
lastName : 'last ',
streetNum : 'number',
},
selectors:{
page2Data:{
_3txtFamilyName: function(){
return module.exports.myData.firstName
},
_4txtgivenName: function(){
return module.exports.myData.lastName
},
_5txtAddressStreetNo: function(){
return module.exports.myData.streetNum
} ,
}
}
});