如何限制“的使用”===&引用;javascript中特定对象属性的运算符
例如,以下两个javascript对象的属性包括“name”、“age”和“phoneNumber”如何限制“的使用”===&引用;javascript中特定对象属性的运算符,javascript,typescript,ecmascript-6,Javascript,Typescript,Ecmascript 6,例如,以下两个javascript对象的属性包括“name”、“age”和“phoneNumber” const personA={ 姓名:安迪, 年龄:"24岁",, 电话号码:“28173516374” } const personB={ 姓名:“艾米”, 年龄:25岁, 电话号码:“+85 28173516374” } 对于属性“phoneNumber”,我不希望其他人将其与运算符“==”一起使用,以与其他字符串(如personA.phoneNumber===personB.phoneN
const personA={
姓名:安迪,
年龄:"24岁",,
电话号码:“28173516374”
}
const personB={
姓名:“艾米”,
年龄:25岁,
电话号码:“+85 28173516374”
}
对于属性“phoneNumber”,我不希望其他人将其与运算符“==”一起使用,以与其他字符串(如personA.phoneNumber===personB.phoneNumber
)进行比较,因为对于phoneNumber的值,无论是否带有预先指定的国家代码,它都应该相同。对于其他没有这方面知识背景的开发人员,他们可能会使用==
对电话号码值的两个变量进行比较,这会引起一些错误
所以我需要一种方法来限制===
在特定属性上的使用。我已经提出了几种解决方案,但它们或多或少都有缺点
解决方案1:将表示电话号码的所有属性的类型从string
转换为类PhoneNumber
,该类将处理所有比较和值格式设置。但是,我必须使用new
来创建该对象,并且应该修改许多地方。因为这个属性在我的项目中无处不在。在尝试了几次之后,我放弃了应用这个解决方案
解决方案2:使用通用功能比较两个电话号码。正如我之前所说,并不是所有的开发人员和评审人员都知道这个功能。即使我在文件中提到它,仍然有人忘记了这一点
现在,我正在尝试开发一个eslint规则,以限制在特定属性上使用
==
。你还有别的想法吗?对不起,我英语不好
如果任务是控制谁可以读取字段值,谁不能,那么可以通过几种方式解决
{
让管理员;
const personA={
年龄:"24岁",,
性别:“男人”,
privateName:“Jhon”,
获取名称(){
返回(admin==true?this.privateName:“***”);
},
集合名称(v){
返回值(admin==true?this.privateName=v:“***”)
}
}
admin=false;
personA.name=“玛丽”
console.log(personA.name)
admin=true;
console.log(personA.name)
personA.name=“玛丽”
console.log(personA.name)
}
可能不会,这真的很奇怪。那么,这样的一处房产怎么能进入呢?不,这是不可能的。例如,对象有一个名为phoneNumber
的属性。众所周知,两个电话号码加上或不加国家代码都是相同的,因此我们不能简单地将其与=
进行比较。我们应该调用一个函数来进行比较。但是,我不能确定其他人是否具有此背景知识。您可能希望为此创建一个类,并为其提供类似checkPhoneNumberMatches方法的功能。您的项目是否具有比较电话号码的功能?谢谢您的回答。这不能解决我的痛点。我只想控制特定属性的==
用法