Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何限制“的使用”===&引用;javascript中特定对象属性的运算符_Javascript_Typescript_Ecmascript 6 - Fatal编程技术网

如何限制“的使用”===&引用;javascript中特定对象属性的运算符

如何限制“的使用”===&引用;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

例如,以下两个javascript对象的属性包括“name”、“age”和“phoneNumber”

const personA={
姓名:安迪,
年龄:"24岁",,
电话号码:“28173516374”
}
const personB={
姓名:“艾米”,
年龄:25岁,
电话号码:“+85 28173516374”
}
对于属性“phoneNumber”,我不希望其他人将其与运算符“==”一起使用,以与其他字符串(如
personA.phoneNumber===personB.phoneNumber
)进行比较,因为对于phoneNumber的值,无论是否带有预先指定的国家代码,它都应该相同。对于其他没有这方面知识背景的开发人员,他们可能会使用
==
对电话号码值的两个变量进行比较,这会引起一些错误

所以我需要一种方法来限制
===
在特定属性上的使用。我已经提出了几种解决方案,但它们或多或少都有缺点

解决方案1:将表示电话号码的所有属性的类型从
string
转换为类
PhoneNumber
,该类将处理所有比较和值格式设置。但是,我必须使用
new
来创建该对象,并且应该修改许多地方。因为这个属性在我的项目中无处不在。在尝试了几次之后,我放弃了应用这个解决方案

解决方案2:使用通用功能比较两个电话号码。正如我之前所说,并不是所有的开发人员和评审人员都知道这个功能。即使我在文件中提到它,仍然有人忘记了这一点


现在,我正在尝试开发一个eslint规则,以限制在特定属性上使用
==
。你还有别的想法吗?

对不起,我英语不好

如果任务是控制谁可以读取字段值,谁不能,那么可以通过几种方式解决

  • 如果可以更改对象的结构,那么getter和setter适合您。
  • 简化的示例解决方案如下所示:

    {
    让管理员;
    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方法的功能。您的项目是否具有比较电话号码的功能?谢谢您的回答。这不能解决我的痛点。我只想控制特定属性的
    ==
    用法