0

有什么理由我不应该使用函数引用作为对象的属性/键?此代码在 Chrome、Firefox 和 IE8 中有效,但“只是因为某些东西有效......”

var x = {}

var a = function() { return 'a' };
var b = function() { return 'b' };

x[a] = 1
x[b] = 2

x[a] === x[a] // returns true
x[a] === x[b] // returns false
x[b] === x[b] // returns true
x[a] // returns 1
x[b] // returns 2
4

1 回答 1

5

对象键是字符串。中使用的x[a]其实是x[a.toString()].

这意味着您作为键的函数与字符串完全相同:

x[a] === x["function () { return 'a' }"]

所以是的,你可能认为它既不安全也不合理。很难想象它会在什么环境中有用或有效。

于 2013-08-23T18:36:38.977 回答