Javascript 在具有相同预定义属性名称时使用getter和setter

Javascript 在具有相同预定义属性名称时使用getter和setter,javascript,Javascript,我正在阅读的MDN文档,上面写着如下内容:(见粗体文本) 它不能与另一个get或 相同属性的数据项({get x(){},get x(){}和{ x:…,get x(){}被禁止)。 在阅读本文之后,我尝试通过使用严格模式打破这个“禁止”规则: “严格使用”; 常量对象={ 姓名:“艾哈迈德”, 获取名称(){ 返回“覆盖”; } } 控制台日志(对象名称)ES规范和浏览器实现之间存在差异 在本例中,不说明如何处理属性名和getter函数名相同的情况。由于这种行为是不可预测的,MDN告诉您这是

我正在阅读的MDN文档,上面写着如下内容:(见粗体文本)

它不能与另一个get或 相同属性的数据项({get x(){},get x(){}和{ x:…,get x(){}被禁止)。

在阅读本文之后,我尝试通过使用严格模式打破这个“禁止”规则:

“严格使用”;
常量对象={
姓名:“艾哈迈德”,
获取名称(){
返回“覆盖”;
}
}

控制台日志(对象名称)ES规范和浏览器实现之间存在差异

在本例中,不说明如何处理属性名和getter函数名相同的情况。由于这种行为是不可预测的,MDN告诉您这是禁止的

不应该这样做是有原因的,在大多数情况下,您可能会错误地触发递归,例如在本例中:

“严格使用”;
常量对象={
姓名:“艾哈迈德”,
获取名称(){
返回此.name;
}
}

控制台日志(对象名称)除了@Cristian Traìna之外,它还可能返回垃圾值,或者浏览器堆内存可能会被超过,这就是它被禁止的原因

“严格使用”;
常量对象={
姓名:“艾哈迈德”,
获取名称(){
返回此.name;
},
获取名称(){
返回名称;
}
}
控制台日志(对象名称)