“ __defineGetter __(0x1000,()=> 1)”是什么意思?

时间:2018-12-19 05:06:07

标签: javascript

__defineGetter__(0x1000, () => 1)有效吗?

__defineGetter__的第一个参数应为属性,第二个参数为函数。

0x1000是有效的属性名称吗?还是__defineGetter__接受其他东西作为第一辩护?

1 个答案:

答案 0 :(得分:1)

尽管令人困惑,但0x1000确实是有效的属性。

let x = {}
x.__defineGetter__(0x1000, () => 1)
x[0x1000] // == x['4096'] == 1

不过,更一般而言,对象属性键是字符串,如果您使用的不是字符串,则将使用String(key)将其转换为字符串。一个更明确的示例:

let x = {}
let y = {}
x.__defineGetter__(y, () => 1)
x[y] // == x['[object Object]'] == 1

因此,如果两个不同值(例如,两个不同对象)的字符串表示形式不同,则它们将充当 same 键(并映射到相同的值)。