使用函数引用作为对象属性/键是安全的

时间:2013-08-23 18:34:05

标签: javascript performance cross-browser

我不应该使用函数引用作为对象的属性/键吗?此代码适用于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

1 个答案:

答案 0 :(得分:5)

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

这意味着您的密钥功能与字符串完全相同:

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

所以是的,你可能认为这既不安全又不合理。很难想象它会有用或有效的背景。