我不应该使用函数引用作为对象的属性/键吗?此代码适用于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
答案 0 :(得分:5)
对象键是字符串。 x[a]
中使用的内容实际上是x[a.toString()]
。
这意味着您的密钥功能与字符串完全相同:
x[a] === x["function () { return 'a' }"]
所以是的,你可能认为这既不安全又不合理。很难想象它会有用或有效的背景。