在JavaScript中,通常使用对象作为散列:
hash = {};
hash.key = 'value';
甚至可以使用带空格的密钥:
hash['a key'] = 'a value';
但是有几个限制:密钥不能称为
- CCD_ 1
- CCD_ 2
- CCD_ 3
- CCD_ 4
- CCD_ 5
- CCD_ 6
- CCD_ 7
- CCD_ 8
- CCD_ 9
- CCD_ 10
- CCD_ 11
- CCD_ 12
因为这将导致与JavaScript对象内部的名称空间冲突。
规避这一限制的最佳方法是什么?
您可以使用__proto__
3并将父级设置为null
,例如
var data = {};
console.log(
data.toString
); // in parent prototype there is toString method. returns function
var hash = Object.create(null);
console.log(
hash.toString,
hash.valueOf,
hash.__defineGetter__
); // will be undefined because we set parent as null